TensorFlowの実行状態を可視化するツールとして、TensorBoardがあります。
このTensorBoardは非常に高機能であり、スカラー・テンソル・画像・計算グラフ等を簡単に可視化できます。
TensorBoardでデータを可視化するためには、プログラミング中でデータのマージを行う必要があります。
そこで今回はこのデータのマージ方法を調べました。
Contents
TensorBoard
TensorBoardはTensorFlowに付属しているデータの可視化ツールです。
TensorBoardを利用するためには、プログラムにデータ取得のための設定を行う必要があります。
使い方は下記の記事を参照してください。
プログラム中でデータ取得の設定を行った後、取得するデータのマージを行うことで、Tensorboardでデータを見ることができるようになります。
今回はこのマージ命令について詳しく見てみました。
データのマージ
データのマージ方法はよく使うものとして次の三つがあります。
- merge_allによる一括マージ
- mergeによる個別マージ
- collections引数指定によるマージ設定
tf.summary.merge_allによる一括指定
最もよく使用するマージの方法として、tf.summary.merge_allがあります。
この関数はプログラム中に設定したデータの取得を一括して行うことができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
tf.summary.scalar("test1", test1) #scalar取得設定 tf.summary.scalar("test2", test2) #scalar取得設定 summ_op = tf.summary.merge_all() #一括マージ with tf.Session() as sess: summary_writer = tf.summary.FileWriter("./logs", sess.graph) for i in range(5): summary_str = sess.run(summ_op, feed_dict={x:i}) #マージ実行 summary_writer.add = (summary_str, i) |
上記の例のようにtf.summary.merge_all()を行えば、すべてのデータのマージを行うことができます。
tf.summary.mergeによる個別指定
tf.summary.merge_allを使用すれば設定したデータをすべてマージすることができます。しかし場合によってはすべてではなく一部のみマージしいことがあると思います。
そのような場合にしようするのがtf.summary.mergeです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
summ1 = tf.summary.scalar("test1", test1) #scalar取得設定 summ2 = tf.summary.scalar("test2", test2) #scalar取得設定 summ_op = tf.summary.merge(summ1) #個別マージ with tf.Session() as sess: summary_writer = tf.summary.FileWriter("./logs", sess.graph) for i in range(5): summary_str = sess.run(summ_op, feed_dict={x:i}) #summ1のみマージ summary_writer.add = (summary_str, i) |
tf.summary.scalarなどのデータ取得設定関数は返り値として Summary のプロトコルバッファを出力します。
このプロトコルバッファまたはプロトコルバッファの行列ををtf.summary.mergeの引数として渡せば、個別でマージを実行することができます。
collections引数による指定
tf.summary.scalarなどのデータ取得設定関数は返り値としてプロトコルバッファを出力しますが、
出力のほかに内部でリストの形式で記録されています。
tf.summary.merge_allはこの内部で保存されたリストをもとにマージを実行します。
この保存するリストはデフォルトでは、 tf.GraphKeys.SUMMARIES ですが、データ取得設定関数のcollections引数から変更することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
tf.summary.scalar("test1", test1, collections=["test1"]) #scalar取得設定、コレクションは"test1" tf.summary.scalar("test2", test2, collections=["test2"]) #scalar取得設定、コレクションは"test2" summ_op = tf.summary.merge_all("test1") #コレクション"test1"に登録されているものを一括マージ with tf.Session() as sess: summary_writer = tf.summary.FileWriter("./logs", sess.graph) for i in range(5): summary_str = sess.run(summ_op, feed_dict={x:i}) #マージ summary_writer.add = (summary_str, i) |
まとめ
- TensorFlowでデータをマージするには次の方法がある。
- tf.summary.merge_allによる一括マージ
- tf.summary.mergeによる個別マージ
- collections引数によるマージコレクションの指定
関連記事