1. 程式人生 > 其它 >TensorBoard 檢視 summary 日誌檔案只有 Graph,沒有具體的標量等

TensorBoard 檢視 summary 日誌檔案只有 Graph,沒有具體的標量等

技術標籤:TensorFlow基礎

檢視訓練模型儲存下來的事件日誌檔案命令:

# 最後不帶 “/”
tensorboard --logdir="./tensorboard/20190802-211034"
# 也可以最後帶 “/”
tensorboard --logdir="./tensorboard/20190802-211034/"
# 單引號也可以
tensorboard --logdir=‘./tensorboard/20190802-211034/’

但一定要注意:–logdir 引數傳入的是事件檔案所在的資料夾,而不是事件檔案本身!
事件檔案一般如下:
events.out.tfevents.******.******.******

對於初學者可能會遇到的問題就是明明把觀察的物件新增到 summary 中,最後執行 tensorboard 命令後,在瀏覽器中檢視卻只有圖 GRAPHS 的選項,而沒有所要觀察的物件,如損失項標量:

錯誤例項:

tf.summary.scalar('loss_1', loss1)
tf.summary.scalar('loss_2', loss2)

merged_summaries = tf.summary.merge_all()

logdir = "tensorboard/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S"
) + "/" sess = tf.Session() writer = tf.summary.FileWriter(logdir, sess.graph) # 有些情況下,在 Session 中還有一行程式碼 summary_results = sess.run(merged_summaries, {x_holder: batch_X, c_holder: one_hot_y, z_holder: batch_z})

但實際上,上面的程式碼只是把圖 Graph 寫入到了日誌事件檔案中,在有、沒有最後一行的情況下,tensorflow 程式都能執行不報錯,但是卻因為拉下一步 writer.add_summary() 而沒有將觀察的物件寫入到日誌檔案中!

正確例項:

tf.summary.scalar('loss_1', loss1)
tf.summary.scalar('loss_2', loss2)

merged_summaries = tf.summary.merge_all()

logdir = "tensorboard/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S") + "/"

sess = tf.Session()
writer = tf.summary.FileWriter(logdir, sess.graph)

# 有些情況下,在 Session 中還有一行程式碼
summary_results = sess.run(merged_summaries, {x_holder: batch_X, c_holder: one_hot_y, z_holder: batch_z}) # 這一步不能拉下,否則沒有執行觀察物件的命令
writer.add_summary(summary_results, global_step=train_epoch) # 這一步更不能拉下,否則即使運行了觀察物件的 summary 命令,也不會寫入到日誌事件檔案中,就會造成檢視 tensorboard 時只有一個 GRAPHS 選項!