『ゼロから作るDeep Learning』3章続き。
ニューラルネットワークの順方向forward処理について。
# 順方向forward処理:入力から出力方向への伝達処理。あとで逆方向backward処理について学ぶ # 以下3層ニューラルネットワーク構成とする # 入力層(第0層) # 隠れ層1(第1層) # 隠れ層2(第2層) # 出力層(第3層) # cat forward.py #!/usr/bin/env python import numpy as np import my_module as my def init(): #初期化 n = {} # weight n['W1'] = np.array([ [0.1, 0.3, 0.5], [0.2, 0.4, 0.6] ]) n['W2'] = np.array([ [0.1, 0.4], [0.2, 0.5], [0.3, 0.6] ]) n['W3'] = np.array([ [0.1, 0.3], [0.2, 0.4] ]) # bias n['b1'] = np.array([0.1, 0.2, 0.3]) n['b2'] = np.array([0.1, 0.2]) n['b3'] = np.array([0.1, 0.2]) return n def forward(n, x): #入力を出力へ変換する処理をまとめた関数 W1, W2, W3 = n['W1'], n['W2'], n['W3'] b1, b2, b3 = n['b1'], n['b2'], n['b3'] # 1層目 a1 = np.dot(x, W1) + b1 z1 = my.sigmoid(a1) # 2層目 a2 = np.dot(z1, W2) + b2 z2 = my.sigmoid(a2) # 出力層 a3 = np.dot(z2, W3) + b3 y = my.identity(a3) #何もせずそのまま返す恒等関数 return y n = init() x = np.array([1.0, 0.5]) y = forward(n, x) print(y) # 実行 py forward.py [ 0.31682708 0.69627909]
次は、出力層の設計に入る。