TensorFlow:在TensorFlow Mechanics 101教程中使用tf $ summary

时间:2017-09-14 07:17:31

标签: r tensorflow

我已成功尝试TensorFlow Mechanics 101教程,并提出以下问题。

我发现控制台上输出的丢失值与TensorBoard显示的丢失值之间存在差异。

我的理解是这些应该是相同的:

  • 控制台输出是在fully_connected_feed.R的第190行的每个第100步创建的,它输出loss_value在第182行创建的sess$run应用于丢失操作;因此,它应该是该特定步骤的损失,四舍五入到小数点后两位。
  • TensorBoard显示的值也适用于每个第100步。它似乎是由第193行创建的summary_str中的第194-195行创建的,方法是将sess$run应用于第147行定义的摘要操作tf$summary$merge_all()。这应该选择唯一的汇总操作,相同的损失,在mnist.R的第125行定义,此操作适用于同一步骤。

因此,这两个损失值应该相同,直至四舍五入。

然而,他们不是,尽管他们很接近。我尝试将它们与不同的数据进行比较,这些数据的学习不能很好地收敛,并且发现了更大的差异。

在我看来,我不了解TensorFlow摘要的基本内容。

我正在使用RStudio版本1.0.153,R版本3.4.1,今天在Ubuntu 16.04上重新安装所有R软件包。

有任何帮助吗? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

问题在于这个tuturial文件fully_connected_feed.R的第183-184行:

values <- sess$run(list(train_op, loss), feed_dict = feed_dict)
loss_value <- values[[2]]

我用以下代码替换了这两行:

sess$run(train_op, feed_dict = feed_dict)
loss_value = sess$run(loss, feed_dict = feed_dict)

此代码似乎与原始代码相同(这是我在此答案的早期版本中声明的,引用the manual for tf$Session$run)但it is not

使用此代码,问题消失,控制台输出和相同loss操作结果的摘要记录变得相同。