如何在TensorFlow中的单个图表中可视化损失?

2024-04-20 11:44:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用张量流训练一个模型,然后得到一个损失图。我正在使用以下代码段:

for step in range(NUM_BATCHES):
    img, lbl = sess.run([batch_images, batch_labels])
    _, loss_value = sess.run([train_op, cost], feed_dict={X: img, Y: lbl, p_keep_conv: 0.8, p_keep_hidden: 0.5})
    print("Step %d, loss %1.5f" % (step, loss_value))
    sys.stdout.flush()
    tf.summary.scalar('loss', loss_value)
    summary_writer.add_summary(sess.run(tf.summary.merge_all()), step)

当我在TensorBoard中打开日志目录时,我看不到loss函数的运行图。事实上,我甚至没有看到Events部分,但是我有一个标量部分,它显示LOSS_xx值(xx对于每个批)。你知道吗

我错过了什么?你知道吗


Tags: run模型imgvaluetfstepbatchsummary
1条回答
网友
1楼 · 发布于 2024-04-20 11:44:18

这里的错误是,摘要是用TensorFlow操作创建的,tf.summary命名空间中的函数(如tf.summary.scalar)也使用张量。您的代码在每个迭代中创建一个新的、独立的摘要图表,而不是将所有标量损失值作为同一摘要的一部分。你知道吗

要解决这个问题,您必须只创建一次摘要操作,通常是在进行培训之前。使用此方法,每个步骤只需运行一次:

tf.summary.scalar('loss', cost)
all_summaries = tf.summary.merge_all()
for step in range(NUM_BATCHES):
    img, lbl = sess.run([batch_images, batch_labels])
    _, loss_value, summary = sess.run([train_op, cost, all_summaries], feed_dict={X: img, Y: lbl, p_keep_conv: 0.8, p_keep_hidden: 0.5})
    print("Step %d, loss %1.5f" % (step, loss_value))
    sys.stdout.flush()
    summary_writer.add_summary(summary, step)

相关问题 更多 >