標籤:

TensorFlow的Summary

首先來看關於Summary的介紹(From 【TensorFlow動手玩】常用集合: Variable, Summary, 自定義):

Summary

Summary被收集在名為tf.GraphKeys.SUMMARIEScolletion

定義

Summary是對網路中Tensor取值進行監測的一種Operation。這些操作在圖中是「外圍」操作,不影響數據流本身。注意:Summary本身也是一個op

1.1 Tensorboard的數據形式

Tensorboard可以記錄與展示以下數據形式:

(1)標量Scalars

(2)圖片Images

(3)音頻Audio

(4)計算圖Graph

(5)數據分布Distribution

(6)直方圖Histograms

(7)嵌入向量Embeddings

1.2 Tensorboard的可視化過程

(1)首先肯定是先建立一個graph,你想從這個graph中獲取某些數據的信息

(2)確定要在graph中的哪些節點放置summary operations以記錄信息

使用tf.summary.scalar記錄標量

使用tf.summary.histogram記錄數據的直方圖

使用tf.summary.distribution記錄數據的分布圖

使用tf.summary.image記錄圖像數據

….

(3)operations並不會去真的執行計算,除非你告訴他們需要去run,或者它被其他的需要run的operation所依賴。sess.run(op) 或者sess.run(op->依賴之)

而我們上一步創建的這些summary operations其實並不被其他節點依賴,因此,我們需要特地去運行所有的summary節點。但是呢,一份程序下來可能有超多這樣的summary 節點,要手動一個一個去啟動自然是及其繁瑣的,因此我們可以使用tf.summary.merge_all去將所有summary節點合併成一個節點,只要運行這個節點,就能產生所有我們之前設置的summary data

(4)使用tf.summary.FileWriter將運行後輸出的數據都保存到本地磁碟中

(5)運行整個程序,並在命令行輸入運行tensorboard的指令,之後打開web端可查看可視化的結果

用例

我們模仿常見的訓練過程,創建一個最簡單的用例。

# 迭代的計數器nglobal_step = tf.Variable(0, trainable=False)n# 迭代的+1操作nincrement_op = tf.assign_add(global_step, tf.constant(1))n# 實例應用中,+1操作往往在`tf.train.Optimizer.apply_gradients`內部完成。nn# 創建一個根據計數器衰減的Tensornlr = tf.train.exponential_decay(0.1, global_step, decay_steps=1, decay_rate=0.9, staircase=False)nn# 把Tensor添加到觀測中ntf.scalar_summary(learning_rate, lr)nn# 並獲取所有監測的操作`sum_opts`nsum_ops = tf.merge_all_summaries()nn# 初始化sessnsess = tf.Session()ninit = tf.initialize_all_variables()nsess.run(init) # 在這裡global_step被賦初值nn# 指定監測結果輸出目錄nsummary_writer = tf.train.SummaryWriter(/tmp/log/, sess.graph)nn# 啟動迭代nfor step in range(0, 10):n s_val = sess.run(sum_ops) # 獲取serialized監測結果:bytes類型的字元串n summary_writer.add_summary(s_val, global_step=step) # 寫入文件n sess.run(increment_op) # 計數器+1n

調用tf.scalar_summary系列函數時,就會向默認的collection中添加一個Operation

再次回顧「零存整取」原則:創建網路的各個層次都可以添加監測;在添加完所有監測,初始化sess之前,統一用tf.merge_all_summaries獲取。

查看

SummaryWriter文件中存儲的是序列化的結果,需要藉助TensorBoard才能查看。

在命令行中運行tensorboard,傳入存儲SummaryWriter文件的目錄:

tensorboard --logdir /tmp/log n

完成後會提示:

You can navigate to http://127.0.1.1:6006n

可以直接使用伺服器本地瀏覽器訪問這個地址(本機6006埠),或者使用遠程瀏覽器訪問伺服器ip地址的6006埠。

參考資料:

06:Tensorflow的可視化工具Tensorboard的初步使用 - CSDN博客

【TensorFlow動手玩】常用集合: Variable, Summary, 自定義


推薦閱讀:

使用TensorFlow時輸入數據的三個姿勢
Google開源模塊化多任務訓練庫Tensor2Tensor
深度學習巨頭Yann Lecun 中科院自動化所座談及清華大學講座乾貨速遞(一)(內含珍貴歷史影像及學術八卦)
學習筆記TF037:實現強化學習策略網路

TAG:TensorFlow |