Tue May 24 17:09:40 JST 2016

An Easy Example of Linear Regression: もっと簡単なchainerを使う例

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

model = L.Linear(2, 1)
opt = optimizers.SGD()
opt.setup(model)

for i in range(10000):
    x0 = random.random()
    x1 = random.random()
    x = Variable(np.array([ x0,x1 ], dtype=np.float32).reshape(1, 2))
    y = Variable(np.array([ x0+x1 ], dtype=np.float32).reshape(1, 1))

    # loss = F.mean_squared_error(model(x), y)
    loss = (y - model(x)) ** 2
    model.zerograds()
    loss.backward()
    opt.update()

print( model.W.data )
print( model.b.data )

1. import 列

これはおまじないである

2. モデルの定義

model = L.Linear(2, 1)

3. 最適化ソルバ

opt = optimizers.SGD()
opt.setup(model)

4. setup

    x0 = random.random()
    x1 = random.random()
    x = Variable(np.array([ x0,x1 ], dtype=np.float32).reshape(1, 2))
    y = Variable(np.array([ x0+x1 ], dtype=np.float32).reshape(1, 1))

5. 学習フェーズ

    # loss = F.mean_squared_error(model(x), y) # こういうのもある
    loss = (y - model(x)) ** 2 # 自分で書いても良い
    model.zerograds()
    loss.backward()
    opt.update()

6. 学習結果を確認する

print( model.W.data )
print( model.b.data )
[[ 0.99998778  0.9999873 ]]
[  1.44174519e-05]