generated at
Chainer

始める

関数の種類
パラメータを持つ関数
NNの層を表す
chainer.links 以下にある
パラメータを持たない関数
など
chainer.functions 以下にある

Sequential でネットワークを定義
Affine LayerはLinearクラスで定義されている
py
import 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
ニューラルネットワークの一つのノードに対応するオブジェクト
py
v = Variable(np.array([1], dtype=np.float32)) # node宣言 v.data # 中身を確認 v.backward() # 逆伝搬を実行. 前のノードの`.grad`に微分値が入る
参考
chainer.Function
Variableオブジェクトを引数に取る関数を提供する
py
from chainer import Function as F F.sin(x).data
参考
chainer.links
層から層への写像を提供する
というよりも、「一層一層を表すオブジェクト」って言ったほうがわかりやすくない?
Variableオブジェクトを引数に取る関数を提供する
Functionと異なりパラメータを持つオブジェクト
py
from 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を追加してモデルを作っていく
これ作られてできたモデルはどんなフォーマットになってるんだろうかmrsekut
py
class 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
参考