Chainer
始める
関数の種類
パラメータを持つ関数
NNの層を表す
chainer.links
以下にある
パラメータを持たない関数
など
chainer.functions
以下にある
Sequential
でネットワークを定義
pyimport chainer.links as L
import chainer.functions as F
from chainer import Sequential
net = Sequential(
L.Linear(4, 10), # Linear(入力次元,出力次元)
F.relu,
L.Linear(10, 10), # ←隠れ層
F.relu,
L.Linear(10, 2) # ←出力層
)
基本的なオブジェクトについて
chainer.Variable
pyv = Variable(np.array([1], dtype=np.float32)) # node宣言
v.data # 中身を確認
v.backward() # 逆伝搬を実行. 前のノードの`.grad`に微分値が入る
参考
chainer.Function
Variableオブジェクトを引数に取る関数を提供する
pyfrom chainer import Function as F
F.sin(x).data
参考
chainer.links
層から層への写像を提供する
というよりも、「一層一層を表すオブジェクト」って言ったほうがわかりやすくない?
Variableオブジェクトを引数に取る関数を提供する
Functionと異なりパラメータを持つオブジェクト
pyfrom chainer import links as L
l = L.Linear(3, 4) # 3次元から4次元へのアフィン変換. 内部的に(y=Wx+b)の`W`と`b`のパラメータを保持する
l.W.data
l.b.data
y = l(x) # `l`は関数として使える
l.zerograds() # 勾配をゼロに初期化する
参考
chainer.Chain
Function
や links
で提供される関数を合成してパラメータの推定をする
Chainにlinksを追加してモデルを作っていく
これ作られてできたモデルはどんなフォーマットになってるんだろうか

pyclass Chain(Chain): # chainer.Chainを継承して使う
def __init__(self):
super(MyClass, self).__init__(
l1 = L.linear(4, 3),
l2 = L.linear(3, 3)
)
def forward(self, x):
return F.sigmoid(self.li1(x))
def __call__(self, x, y):
result = self.forward(x)
loss = F.mean_squared_error(result, y)
return loss
参考