49. パート1:二進数の加算
初期化処理3/リカレントニューラルネットワークの構造定義
for position in range(binary_dim):
X = np.array([[a[binary_dim - position - 1],b[binary_dim - position - 1]]])
y = np.array([[c[binary_dim - position - 1]]]).T
layer_1 = sigmoid(np.dot(X,synapse_0) + np.dot(layer_1_values[-1],synapse_h))
print layer_1
layer_2 = sigmoid(np.dot(layer_1,synapse_1))
d[binary_dim - position - 1] = np.round(layer_2[0][0])
ネットワークの構造定義
(先ほど初期化した重みを使用)
69. パート2:テキスト生成
学習処理
for i = 1, num_iterations do
local epoch = math.floor(i / num_train) + 1
if i % num_train == 0 then
model:resetStates()
end
if epoch % 5 == 0 then
old_lr = optim_config.learning_rate
optim_config = {learning_rate = old_lr * 0.5}
end
local _, loss = optim.adam(f, params, optim_config)
local float_epoch = i / num_train
end
学習イタレーションループ
順伝播・逆伝播