我已成功尝试TensorFlow Mechanics 101教程,并提出以下问题。
我发现控制台上输出的丢失值与TensorBoard显示的丢失值之间存在差异。
我的理解是这些应该是相同的:
fully_connected_feed.R
的第190行的每个第100步创建的,它输出loss_value
在第182行创建的sess$run
应用于丢失操作;因此,它应该是该特定步骤的损失,四舍五入到小数点后两位。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软件包。
有任何帮助吗? 提前谢谢。
答案 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
操作结果的摘要记录变得相同。