簡體   English   中英

張量板摘要卡在0

[英]Tensorboard Summaries Stuck at 0

我在任何地方都找不到。 我不太了解如何在Tensorboard中添加標量匯總,因此我決定制作一條我認為最基本的示例,即一條直線。 這是我的代碼:

import tensorflow as tf
import numpy as np

x = tf.Variable(0, dtype=tf.float32)

tf.summary.scalar("X", x)

init = tf.global_variables_initializer()
with tf.Session() as sess: 
    writer = tf.summary.FileWriter('./logs', sess.graph)
    sess.run(init)
    for i in range(1, 11):
        merge = tf.summary.merge_all()

        x = tf.add(x, 1)

        summary, x = sess.run([merge, x])

        writer.add_summary(summary, i)
    print("X = ", x)

無論我嘗試更改什么,打開Tensorboard時標量摘要都保持為0。 也許我不明白摘要是什么? 也許我創建錯了? 老實說,我不知道。 關於Tensorboard摘要的任何可靠文檔也將不勝感激。 謝謝。

摘要結果的圖片

x = tf.add(x, 1)意味着現在python變量x將引用一個 Tensor,其值比以前的Tensor x大1。 因此,在第3行中創建的變量(例如Variable:0將保持不變,並且不會被更新,其值仍為0。您將在每個循環步驟中創建一個新的張量。 由於摘要仍引用變量Variable:0其值始終為0,而​​不是x ,因此結果是正確的。

您應該這樣做:

import tensorflow as tf
import numpy as np

x = tf.Variable(0, dtype=tf.float32)

tf.summary.scalar("X", x)

increment_op = x.assign_add(1)        # <------- here
summary_op = tf.summary.merge_all()   # <------- watch this too 

init = tf.global_variables_initializer()
with tf.Session() as sess: 
    writer = tf.summary.FileWriter('./logs', sess.graph)
    sess.run(init)
    for i in range(1, 11):

        summary, x = sess.run([summary_op, increment_op])     # <----- here

        writer.add_summary(summary, i)
    print("X = ", x)

另外,請確保在循環期間不要創建不必要的張量(例如,合並的摘要)。 因此,動態創建tf.summary.merge_all()也是錯誤的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM