Introduction
- 目的是為了觀察模型的參數(權重、偏置),損失值等變量值的變化
- 觀察訓練情形如何,可以實時的於tensorboard中以圖形化的方式顯示
- 在大量資料且長時間的訓練能快速掌握目前訓練的情況
- 因此需添加變量在tensorboard中,觀察其變化狀況
收集變量
收集變量的代碼一般是寫在執行會話(Session)之前
scalar
使用tf.summary.scalar(name='',tensor)
收集對於損失函數、準確率等單值變量
name
:變量的名字 (在tensorboard後台顯示的名字)tensor
:欲蒐集哪個tensor變量
histogram
使用tf.summary.histogram(name='',tensor)
收集高維度的變量參數,權重(weight)、偏置(bias) 等
name
:變量的名字 (在tensorboard後台顯示的名字)tensor
:欲蒐集哪個tensor變量
image
使用tf.summary.image(name='',tensor)
收集輸入的圖片張量能顯示圖片
name
:變量的名字 (在tensorboard後台顯示的名字)tensor
:欲蒐集哪個tensor變量
合併變量寫入事件文件
使用tf.summary.merge_all()
,定義合併tensor的op,其會返回合併的op(於graph中定義)
merged = tf.summary.merge_all()
- 固定寫法
- 必須運行op才能執行
- 運行合併:
summary = sess.run(merged)
- 每次迭代都必須運行
- 返回一個事件文件的物件,用於添加到事件文件中
- 添加:
FileWriter.add_summary(summary,i)
i
:表示第幾次的值
- 添加:
範例
以之前使用的線性回歸範例代碼為例
1 | import tensorflow as tf |
Result
SCALARS
- 可以看到隨著迭代的次數增加loss值不斷地在下降,最後趨於收斂
HISTOGRAM
- weights及bias顯示不盡理想的原因是因為,histogram是以高維度去展示結果,而我們只有定一個值,使得其高斯分布的情性變得很奇怪
- 可以SCALARS蒐集只有單值的變量