TFのwrapperであるkerasを使い、Fashion-MNISTを分類する、MLP(中間層が1層)を構築した。TFのグラフを理解するため、Tensorboardを活用した。
今回、Tensorboardを使って、うまくできなかったところは、tf.Placeholderやtf.Variableをわかりやすく表示すること。やり方が分かったら、アップデートすることにする。
Tensorboardを使って可視化した、TFグラフ
flatten
: 入力値を1次元化(flatten)する
全結合層(Dense layer)に流し込むために、1次元にする必要がある。
(nbatch, 28, 28)→(nbatch, 784)
flatten_input
をflatten
のノードに入力する。
flatten
のボックスをクリックすると、右側にflatten
ノードの詳細情報を見ることが出来る。
-
Subgraph: 4 nodes
:flatten
ノードをクリックしていくと、ノード内のグラフ(4つのノードからなる)を見ることができる。
-
Inputs (1)
: インプットはflatten_input
のみ。 -
Outputs (2)
:dense
ノード(ロスを計算するため)とtraining
ノード(中のAdam
ノードに渡される。自動微分で必要であるためか?)
dense
→dropout
→dense1
:全結合層(+Relu活性化)→ドロップアウト→出力層(+Softmax活性化)
このアーキテクチャーは、入力層が1つ、中間層(ドロップアウト有)が1つ、出力層が1つ、のMLP。
dense
layer
-
Matmul
ノード:flatten
ノードのアウトプットと、kernel
ノードのアウトプット(重みW)を掛ける。 -
BiasAdd
ノード:Matmul
ノードのアウトプットと、bias
ノードのアウトプット(バイアスb)を足す。
dropout
layer
-
cond
ノード:たぶん、ドロップアウトするかどうかの条件(conditionを適用するノード) -
keras_learning_phase
ノード:ドロップアウトするMLPのノードを決めるための乱数をアウトプットしているはず。
loss
ノード
詳しくはわからないが、cross entropyを計算しているはず。出力はtraining
ノードに入力しており、Adam
Optimiserを使って、訓練が行われる。