TensorBoardで値を確認する方法

otaguro 1,299views 更新:2015年12月4日

sess.run({確認したい値})、または{確認したい値}.eval()が利用できるようです

変数が次のように設定されている場合

import tensorflow as tf
sess = tf.InteractiveSession()

x=tf.constant([11,22,33,44,55])
y=tf.constant([1,2,3,4,5])
z=tf.add(x,y)
z_ndarray=sess.run(z)

#placeholderを使っている場合はsess.runの実行時に、feed_dictでplaceholderに値を設定します
x_p=tf.placeholder("float", [5])
y_p=tf.placeholder("float", [5])
z_p=tf.add(x_p,y_p)
z_p_ndarray=sess.run(z_p, feed_dict={x_p:[12.,22.,33.,44.,55.],y_p:[1.,2.,3.,4.,5.]})

値の確認方法

1 sess.run()の返り値を使う(ndarrayなのでインデックスを指定してアクセスすることもできます)

print(z_p_ndarray[2])

2 .eval()を使う(InteractiveSessionを利用している場合に利用できます)

print(z.eval())

3 sess.run()の返り値をTensorBoardに表示する

#(演算からSummaryを作成して、sess.run()で実行。その返り値(縦軸)と横軸の値をwriterで書き出します)
#  本家の解説http://www.tensorflow.org/how_tos/summaries_and_tensorboard/index.html
i_p=tf.placeholder(tf.types.float32,name="i")
i_2=tf.mul(i_p, i_p, name="i2")
i_3=tf.pow(i_p, tf.constant(3.), name="i3")

s1 = tf.scalar_summary("i2", i_2) #i**2のSummary protocol bufferを作成
s2 = tf.scalar_summary("i3", i_3) #i**3のSummary protocol bufferを作成
merged = tf.merge_all_summaries() #SummaryをマージしてSummary protocol bufferを作成
writer = tf.train.SummaryWriter("log", graph_def=sess.graph_def)#書き出し先をlogフォルダに指定
for i in range(30):
    m_str=sess.run(merged,feed_dict={i_p:i})#strが返る
    writer.add_summary(m_str, i)#strを書き出し
print("end")

#実行後、Pythonを実行したフォルダにlogフォルダができているので、
#コンソールからtensorboard --logdir=/Users/hoge/tensorflow/log とか実行して、
#ブラウザでhttp://localhost:6006/にアクセスすれば見れます

tf.add(x,y,name)以外の演算はGithubにReferenceがあります。https://github.com/tensorflow/tensorflow/blob/795f35da2d458cbae477ac2fe2bff80c1427a771/tensorflow/g3doc/api_docs/python/index.md

やりたいことに適した演算が用意されていない場合は、sess.run()の返り値がndarrayとか数値型になっているので、普通に演算することも出来ます

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません