相关疑难解决方法(0)

在tensorboard中记录训练和验证丢失

我正在尝试学习如何使用tensorflow和tensorboard.我有一个基于MNIST神经网络教程的测试项目.

在我的代码中,我构造了一个节点,用于计算正确分类的数据集中的数字部分,如下所示:

correct = tf.nn.in_top_k(self._logits, labels, 1)
correct = tf.to_float(correct)
accuracy = tf.reduce_mean(correct)
Run Code Online (Sandbox Code Playgroud)

self._logits是图表的推理部分,labels是包含正确标签的占位符.

现在,我想做的是在训练进行时评估训练集和验证集的准确性.我可以通过运行精度节点两次,使用不同的feed_dicts来完成此操作:

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})
Run Code Online (Sandbox Code Playgroud)

这按预期工作.我可以打印这些值,我可以看到,最初,两个精度都会增加,最终验证精度会在训练精度不断提高时变平.

但是,我还想在tensorboard中得到这些值的图表,我无法弄清楚如何做到这一点.如果我只是添加一个scalar_summaryto accuracy,则记录的值将不区分训练集和验证集.

我还尝试创建两个accuracy具有不同名称的相同节点,并在训练集上运行一个,在验证集上运行一个.然后我scalar_summary为每个节点添加一个.这确实在张量板中给出了两个图形,但是它们不是显示训练集精度的一个图形而是显示验证集精度的图形,而是显示与打印到终端的任何一个都不匹配的相同值.

我可能误解了如何解决这个问题.对于不同的输入,单独记录单个节点的输出的推荐方法是什么?

python tensorflow tensorboard

38
推荐指数
2
解决办法
2万
查看次数

如何在Tensorflow中使用多个摘要集合?

我有两组不同的摘要.每批收集一个,每个时期收集一个.我如何分别用merge_all_summaries(key='???')这两组收集摘要?手动执行它总是一个选项,但似乎有更好的方法.

我认为它应该如何工作的插图:

      # once per batch 
      tf.scalar_summary("loss", graph.loss)
      tf.scalar_summary("batch_acc", batch_accuracy)
      # once per epoch
      gradients = tf.gradients(graph.loss, [W, D])
      tf.histogram_summary("embedding/W", W, collections='per_epoch')
      tf.histogram_summary("embedding/D", D, collections='per_epoch')

      tf.merge_all_summaries()                # -> (MergeSummary...) :)
      tf.merge_all_summaries(key='per_epoch') # -> NONE              :(
Run Code Online (Sandbox Code Playgroud)

python summary tensorflow

14
推荐指数
1
解决办法
3423
查看次数

标签 统计

python ×2

tensorflow ×2

summary ×1

tensorboard ×1