Exemplo n.º 1
0
    y = F.linear(y, W2, b2)
    return y


lr = 0.2
iters = 10000

# NNの学習
for i in range(iters):
    # 推論
    y_pred = predict(x)
    # 損失関数求める
    loss = F.mean_square_error(y, y_pred)

    # 前のiterの勾配を消す
    W1.cleargrad()
    b1.cleargrad()
    W2.cleargrad()
    b2.cleargrad()
    # lossから各parameterの勾配を求める
    loss.backward()

    # 各parameterを更新する
    W1.data -= lr * W1.grad.data
    b1.data -= lr * b1.grad.data
    W2.data -= lr * W2.grad.data
    b2.data -= lr * b2.grad.data

    if i % 1000 == 0:  # 1000かいごとに結果を出力
        print(loss)
Exemplo n.º 2
0
if '__file__' in globals():
    import sys, os
    sys.path.append(os.path.join(os.path.dirname(__file__), '..'))

import numpy as np
from my_dezero import Variable

x = Variable(np.array(2.0))
y = x**2
y.backward(create_graph=True)
gx = x.grad
x.cleargrad()

z = gx**3 + y
z.backward()
print(x.grad)
Exemplo n.º 3
0
    diff = x0 - x1
    return F.sum(diff**2) / len(diff)


lr = 0.1
iters = 100  # 損失関数をもとにしてパラメータを更新する回数

# 勾配降下法で最適なパラメータを求める
for i in range(iters):
    # 推論
    y_pred = predict(x)
    # 推論結果と真の値のMSEを求める
    loss = mean_square_error(y, y_pred)

    # 前のiterの勾配を削除
    W.cleargrad()
    b.cleargrad()

    # 勾配を求める
    loss.backward()

    # 勾配降下法でparameterを更新
    W.data -= lr * W.grad.data
    b.data -= lr * b.grad.data

    # 確認用 位置違くない?
    print('W : ', W.data, ' b : ', b.data, ' loss : ', loss.data)

plt.scatter(x.data, y.data)
plt.plot(x.data, predict(x).data, color='red')
plt.show()