Chainer備忘録1

このあたりを参照してPythonの環境を整える qiita.com

qiita.com

3章 Chainerの使い方 3.4 optimizers 損失関数に入力している(x,y) についてshapeの記載がないが、 ここは In [42]: x.shape Out[42]: (3, 4) In [43]: y.shape Out[43]: (3, 3)

import chainer
from chainer import cuda, Function, gradient_check, Variable, optimizers, serializers, utils
from chainer import Link, Chain, ChainList
import chainer.functions as F
import chainer.links as L


class MyChain(Chain):
    def __init__(self):
        super(MyChain, self).__init__(
            l1 = L.Linear(4,3),
            l2 = L.Linear(3,3),
        )

    def __call__(self, x, y):
        fv = self.fwd(x, y)
        loss = F.mean_squared_error(fv, y)
        return loss

    def fwd(self, x, y):
        return F.sigmoid(self.l1(x))

x = Variable(np.array(range(12)).astype(np.float32).reshape(3,4))
y = Variable(np.array(range(9)).astype(np.float32).reshape(3,3)) 

mymodel = MyChain()
optimizer = optimizers.SGD()
optimizer.setup(model)
model.zerograds()
loss = model(x,y)
loss.backward()
optimizer.update()