強化学習 x ニューラルネットワーク 2 (2層のニューラルネットワーク)

TensorFlowで2層のニューラルネットワークを実装してみます。

np.random.rand(3, 2)で3件の座標データbatchを作成しています。

また1層目から2層目にデータを送るときには、活性化関数(シグモイド)を適用しています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import numpy as np
from tensorflow.python import keras as K

# 2層のニューラルネットワーク
model = K.Sequential([
# 1層目 出力サイズ4、入力1行2列、活性化関数はシグモイド
K.layers.Dense(units=4, input_shape=((2, )), activation="sigmoid"),
# 2層目 出力サイズ4
K.layers.Dense(units=4),
])

print('-------------------------')
# 3件の座標をまとめたバッチ (2次元).
batch = np.random.rand(3, 2)
print('batchの形状', batch.shape)
print('batch', batch)
print('-------------------------')
y = model.predict(batch)
print('出力yの形状', y.shape)
print('出力y', y)
print('-------------------------')

結果

入力データbatchが3行2列(3件の座標データ)となり、出力データが3行4列(3件の4次元データ)となっていることがわかります。
このようにしてみると1行目に1件目の入力データと1件目の出力データが表示され、2行目に次の入力とその出力がされていて対応がわかりやすくなってます。

参考

Pythonで学ぶ強化学習 -入門から実践まで- サンプルコード