2019-05-10 tensorboard使用

TensorBoard 是如何工作的?

簡單來說,TensorBoard 是通過一些操作(summary operations)將數(shù)據(jù)記錄到文件(event files)中,然后再讀取文件來完成作圖的。想要在瀏覽器上看到 TensorBoard 頁面,大概需要這幾步:

? ? summary。在定義計算圖的時候,在適當?shù)奈恢眉由弦恍?summary 操作 。

? ? merge。你很可能加了很多 summary 操作,我們需要使用 tf.summary.merge_all 來將這些 summary 操作聚合成一個操作,由它來產(chǎn)生所有 summary 數(shù)據(jù)。

? ? run。在沒有運行的時候這些操作是不會執(zhí)行任何東西的,僅僅是定義了一下而已。在運行(開始訓練)的時候,我們需要通過 tf.summary.FileWriter() 指定一個目錄來告訴程序把產(chǎn)生的文件放到哪。然后在運行的時候使用 add_summary() 來將某一步的 summary 數(shù)據(jù)記錄到文件中。

當訓練完成后,在命令行使用 tensorboard --logdir=path/to/log-directory 來啟動 TensorBoard,按照提示在瀏覽器打開頁面,注意把 path/to/log-directory 替換成上面指定的目錄。

1. tf.summary.histogram(生成Histogram 和distribution),

代碼示例:

tf.summary.histogram('layer'+str(i+1)+'weights',weights)

2. tf.summary.scalar: 主要用于記錄諸如:準確率、損失和學習率等單個值的變化趨勢。

? ? 代碼示例:

? ? with tf.name_scope('accuracy'):

? ? ? ? correct_prediction = tf.equal(tf.argmax(logits, 1), tf.argmax(y, 1))

? ? ? ? accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

? ? ? ? tf.summary.scalar('accuracy', accuracy)

3. tf.summary.image:?

? ? 作用:如果你的模型輸入是圖像,想檢查每次輸入的圖像以保證正確性。iamges面板就可以顯示出相應的輸入圖像,默認顯示最新的輸入圖像。

代碼示例:

? ? x = tf.placeholder(tf.float32, shape=[None, N_FEATURES], name='x')

? ? x_image = tf.transpose(tf.reshape(x, [-1, 3, 32, 32]), perm=[0, 2, 3, 1])

? ? tf.summary.image('input', x_image, max_outputs=3)

? ? y = tf.placeholder(tf.float32, [None, N_CLASSES], name='labels')

其中參數(shù)max_outputs表示最多顯示幾張圖片。

4. tf.summary.FileWriter(分別生成日志), 指定一個目錄來告訴程序把文件放到哪里。然后運行的時候使用add_summary()來將某一步的summary數(shù)據(jù)記錄到文件中

代碼示例:

? ? eval_writer = tf.summary.FileWriter(LOGDIR + '/eval')# Some other code


? ? seval_writer.add_summary(tf.Summary(value=[tf.Summary.Value(tag='eval_accuracy', simple_value=np.mean(test_acc))]), i)

5. tf.summary.merge_all(整理日志操作的,sess.run一次就不用對上述分別run)



Graphs面板

用于從總體上看所構建的網(wǎng)絡結構,可以顯示訓練數(shù)據(jù)流的方向和大小,訓練時每個節(jié)點的用時,耗費內存的大小,以及參數(shù)的多少。主要分為兩部分:主圖(網(wǎng)絡結構)和輔助節(jié)點(初始化、訓練、保存等節(jié)點)。每個節(jié)點都是用tf.name_scope()來定義的。

tensorboard默認不記錄每個節(jié)點的用時、耗費內存大小等信息的,要顯示這些信息,需要再sess.run()中加入options和run_metadata參數(shù)。添加下列代碼:

? ? run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)

? ? run_metadata = tf.RunMetadata()

? ? s, lss, acc , _ = sess.run([merged_summary, loss, accuracy, train_step],

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? feed_dict={x: batch_x, y: batch_y, phase: 1},

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? options=run_options,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? run_metadata=run_metadata)

? ? summary_writer.add_run_metadata(run_metadata, 'step{}'.format(i))

? ? summary_writer.add_summary(s, i)

Distributions面板

用于展示網(wǎng)絡中各參數(shù)隨訓練步數(shù)增加的變化情況。如:權重的分布

? ? with tf.name_scope(name):

? ? ? ? W = tf.Variable(tf.truncated_normal(

? ? ? ? ? ? [k, k, channels_in, channels_out], stddev=0.1), name='W')

? ? ? ? b = tf.Variable(tf.constant(0.1, shape=[channels_out]), name='b')

? ? ? ? conv = tf.nn.conv2d(inpt, W, strides=[1, s, s, 1], padding='SAME')

? ? ? ? act = tf.nn.relu(conv)

? ? ? ? tf.summary.histogram('weights', W)

? ? ? ? tf.summary.histogram('biases', b)

? ? ? ? tf.summary.histogram('activations', act)

Histograms面板

和distributions是對同一數(shù)據(jù)不同方式的展現(xiàn)。是頻數(shù)直方圖的堆疊。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • TensorBoard TensorBoard的官網(wǎng)教程如下: https://www.tensorflow.or...
    Faded憔悴不堪閱讀 1,818評論 0 0
  • 簡單線性回歸 import tensorflow as tf import numpy # 創(chuàng)造數(shù)據(jù) x_dat...
    CAICAI0閱讀 3,668評論 0 49
  • 這篇文章是針對有tensorflow基礎但是記不住復雜變量函數(shù)的讀者,文章列舉了從輸入變量到前向傳播,反向優(yōu)化,數(shù)...
    horsetif閱讀 1,257評論 0 1
  • 孫五聽 嵩縣焦點地面初級班地面班二期。堅持分享42天 2019.04.10 當孩子被允許印時侯,就會擁有驚人的資...
    悟寶_ad67閱讀 168評論 0 0
  • 最近早起成了困難戶,把鬧鐘關了繼續(xù)睡的情況已經(jīng)持續(xù)了好幾天,不能再這樣繼續(xù)下去了。雖然也是五點多就起來了,但是并不...
    回憶畫卷閱讀 221評論 0 0

友情鏈接更多精彩內容