必要最低限の使い方を覚書き。
AlexNet
画像認識コンテスト(ILSVRC)で2012年に優勝したCNN。
ImageNet Classification with Deep Convolutional Neural Networks
import chainer
from chainer import Chain
from chainer import links as L
from chainer import functions as F
class AlexNet(Chain):
def __init__(self, num_class, train=True):
super(AlexNet, self).__init__()
with self.init_scope():
self.conv1=L.Convolution2D(None, 96, 11, stride=4)
self.conv2=L.Convolution2D(None, 256, 5, pad=2)
self.conv3=L.Convolution2D(None, 384, 3, pad=1)
self.conv4=L.Convolution2D(None, 384, 3, pad=1)
self.conv5=L.Convolution2D(None, 256, 3, pad=1)
self.fc6=L.Linear(None, 4096)
self.fc7=L.Linear(None, 4096)
self.fc8=L.Linear(None, num_class)
def __call__(self, x):
h = F.max_pooling_2d(F.local_response_normalization(
F.relu(self.conv1(x))), 3, stride=2)
h = F.max_pooling_2d(F.local_response_normalization(
F.relu(self.conv2(h))), 3, stride=2)
h = F.relu(self.conv3(h))
h = F.relu(self.conv4(h))
h = F.max_pooling_2d(F.relu(self.conv5(h)), 3, stride=2)
h = F.dropout(F.relu(self.fc6(h)))
h = F.dropout(F.relu(self.fc7(h)))
h = self.fc8(h)
return h
LeNet-5
Yann LeCunらによって考案されたCNN。
Gradient-Based Learning Applied to Document Recognition
import chainer
from chainer import Chain
from chainer import links as L
from chainer import functions as F
class LeNet(Chain):
def __init__(self, num_class, train=True):
super(LeNet, self).__init__()
with self.init_scope():
self.conv1=L.Convolution2D(None, 6, 5, stride=1)
self.conv2=L.Convolution2D(None, 16, 5, stride=1)
self.conv3=L.Convolution2D(None, 120, 4, stride=1)
self.fc4=L.Linear(None, 84)
self.fc5=L.Linear(None, num_class)
def __call__(self, x):
h = F.max_pooling_2d(F.local_response_normalization(
F.sigmoid(self.conv1(x))), 2, stride=2)
h = F.max_pooling_2d(F.local_response_normalization(
F.sigmoid(self.conv2(h))), 2, stride=2)
h = F.sigmoid(self.fc3(h))
h = F.sigmoid(self.fc4(h))
h = self.fc5(h)
return h
今後も追加予定
作ったモデルを可能な限り追加掲載していく。修正も適宜。