TensorFlowで途中の中間層での値を取りたいってときの方法を調べたのでメモっておく.
いろんなネットワークがあるけど、わかりやすい例としてAutoEncoderがあるので、そのケースの場合についてめもしておく.
TensorFlowで記述されたAutoEncoderのソースコードは以下を参考にして、中間層を取り出すために改変する.
https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/autoencoder.py
中間層の値を取得する
中間層の値を取得するのは以外と簡単.
sess.run(中間層までのテンソル, feed_dict={X: 入力})
sess.runを実行すれば入力に対して出力を得ることができる. 与えるテンソルは任意のもののレイヤで実行できるので、中間層だろうが、入力すぐ後の層だろうが得ることができる.
上記のAutoEncoderの例では、decoderに与える前のencoder_opのテンソルが簡単に使えるのでそれを使用している.中間層の128次元の結果が取得できる.
m = sess.run(encoder_op, feed_dict={X: batch_x})
上記の部分だけが大切.入力の画像と出力したい層を指定してmの変数に入れている.
Comments