ページ

2016年6月18日土曜日

機械学習のフレームワークTensorflowを試す 6 - 変数の可視化とスコープ付け(TensorBoard) -


前回やった可視化をさらに進めてみたいと思います。
変数を可視化

前回はtf.constantで[3,4,5]のテンソル値を宣言していたのですが、
今回は可視化する為にtf.Variableメソッドを使って宣言します。
修正したコードがこちら
# coding: UTF-8
import tensorflow as tf

with tf.Graph().as_default():
    array_var = tf.Variable(tf.zeros([3]), name="array")
    square = tf.square(array_var)
    reduce = tf.reduce_mean(square)

    init = tf.initialize_all_variables()
    sess = tf.Session()
    sess.run(init)

    tf.merge_all_summaries()
    summary_writer = tf.train.SummaryWriter('report', sess.graph)

    ret = sess.run(reduce, feed_dict={array_var: [3.0, 4.0, 5.0]})
    print(ret) # => 16.6667
今回結果が16.6667となってますが、これはtf.Variable
tf.zeros([3])を使っている為です。
tf.zerosは指定しないとtf.float32でオール0のテンソルを作成します。
tf.float32で計算する為、結果も少数値になってます。
値は、sess.runfeed_dictに[3,4,5]を指定し、array_varに値を設定しています。

TensorBoardで確認

それでは実際にTensorBoardを起動して確認してみたいと思います。

真ん中にname="array"で指定したtf.Variableが表示されています。
クリックすると内容が見れたりします。

スコープ付け

処理が複雑になってくると可視化も見づらくなってくるので、
そんな時の為にスコープを設定してみたいと思います。
実際にスコープを付けてみたソースがこちら
# coding: UTF-8
import tensorflow as tf

with tf.Graph().as_default():
    with tf.name_scope('variable') as scope:
        array_var = tf.Variable(tf.zeros([3]), name="array")

    with tf.name_scope('op') as scope:
        square = tf.square(array_var)
        reduce = tf.reduce_mean(square)

    with tf.name_scope('init') as scope:
        init = tf.initialize_all_variables()
        sess = tf.Session()
        sess.run(init)

    tf.merge_all_summaries()
    summary_writer = tf.train.SummaryWriter('report', sess.graph)
    ret = sess.run(reduce, feed_dict={array_var: [3.0, 4.0, 5.0]})
    print(ret)
TensorBoardを起動して見てみると指定したスコープで
区切られているのが分かるかと思います。


0 件のコメント:

コメントを投稿