我正在尝试学习如何使用 tensorflow 和 tensorboard。我有一个基于MNIST 神经网络教程的测试项目。
在我的代码中,我构建了一个节点,用于计算数据集中正确分类的数字比例,如下所示:
correct = tf.nn.in_top_k(self._logits, labels, 1)
correct = tf.to_float(correct)
accuracy = tf.reduce_mean(correct)
这里,self._logits
是图的推理部分,labels
是一个包含正确标签的占位符。
现在,我想做的是在训练进行时评估训练集和验证集的准确性。我可以通过使用不同的 feed_dict 两次运行准确度节点来做到这一点:
train_acc = tf.run(accuracy, feed_dict={images : training_set.images, labels : training_set.labels})
valid_acc = tf.run(accuracy, feed_dict={images : validation_set.images, labels : validation_set.labels})
这按预期工作。我可以打印这些值,我可以看到,最初,两个准确度都会增加,最终验证准确度会变平,而训练准确度会不断增加。
但是,我也想在 tensorboard 中获取这些值的图表,但我不知道如何做到这一点。如果我只是添加一个scalar_summary
to accuracy
,记录的值将不会区分训练集和验证集。
我还尝试创建两个accuracy
具有不同名称的相同节点,并在训练集上运行一个,在验证集上运行一个。scalar_summary
然后我向每个节点添加一个。这确实在张量板上给了我两张图,但不是一张显示训练集准确度的图和一张显示验证集准确度的图,它们都显示了相同的值,与打印到终端的任何一个都不匹配。
我可能误解了如何解决这个问题。分别记录来自单个节点的不同输入的输出的推荐方法是什么?