Есть две проблемы, которые я вижу в вашем коде:
1) Во-первых, в каждом цикле вы заново инициализируете глобальные переменные.Это возвращает x к его первоначальному значению (0).
2) Во-вторых, когда вы обновляете x, вы перезаписываете ссылку на переменную с помощью операции добавления TensorFlow.Ваш код для увеличения x заменяет 'x' операцией tf.add, а затем ваше итоговое значение больше не отслеживает переменную tf.Variable, а является операцией сложения.Если вы добавите «print (x)» после того, как определите его и будете запускать его один раз в каждом цикле, вы увидите, что изначально он начинается как <tf.Variable 'x:0' shape=() dtype=int32_ref>
, но затем, увидев, что «x = x + 1», затем напечатайте (x) становится Tensor("add:0", shape=(), dtype=int32)
.Здесь вы можете видеть, что tf.summary.scalar совместим только с исходным значением, и вы можете понять, почему его нельзя обновить.
Вот код, который я изменил, чтобы заставить его работать, чтобы вы могли видетьлинейное значение x в Tensorboard.
import tensorflow as tf
tf.reset_default_graph()
x = tf.Variable(0, name='x')
x_summary = tf.summary.scalar('x_', x)
init = tf.global_variables_initializer()
with tf.Session() as session:
session.run(init)
merged_summary_op = tf.summary.merge_all()
summary_writer = tf.summary.FileWriter('output', session.graph)
for i in range(5):
print(x.eval())
summary = session.run(merged_summary_op)
summary_writer.add_summary(summary, i)
session.run(tf.assign(x, x+1))
summary_writer.flush()
summary_writer.close()