合并张量板摘要时出错

Posted

技术标签:

【中文标题】合并张量板摘要时出错【英文标题】:error while merging summaries for tensorboard 【发布时间】:2016-02-19 18:17:36 【问题描述】:

我正在尝试为 MNIST 初学者教程生成图表,但出现以下错误。由于某种原因,merged_summary_op 对象为 None。

Traceback (most recent call last):
  File "mnist1.py", line 48, in <module>
    summary_str = sess.run(merged_summary_op)
  File "/home/vagrant/anaconda2/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 307, in run
    % (subfetch, fetch, type(subfetch), e.message))
TypeError: Fetch argument None of None has invalid type <type 'NoneType'>, must be a string or Tensor. (Can not convert a NoneType into a Tensor or Operation.)

我想我在这里错过了一步。我先启动会话,然后运行语句:

merged_summary_op = tf.merge_all_summaries()

【问题讨论】:

【参考方案1】:

我有同样的错误。

就我而言,在调用tf.merge_all_summaries() 之前添加至少一个tf.scalar_summary() 解决了这个问题。

例如,

cross_entropy = -tf.reduce_sum(y_*tf.log(y))
tf.scalar_summary("cross_entropy", cross_entropy)
merged_summary_op = tf.merge_all_summaries()

我希望这个 sn-p 对你有帮助。

【讨论】:

我也想这样做,但仍在尝试理解为什么示例代码没有收集标量/直方图摘要:github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/… 因为示例代码在mnist.py(由fully_connected_feed.py导入)中定义的training()中调用了tf.scalar_summary()。见github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/… 添加代码以合并摘要会导致以下错误,否则运行正常。 You must feed a value for placeholder tensor 'Placeholder_1' wi th dtype float . . . . . . .Caused by op u'Placeholder', defined at: File "mnist1.py", line 9, in &lt;module&gt; x = tf.placeholder("float", [None, 784]) 我认为您的问题是您在运行会话时缺少指定占位符。您必须在运行会话以合并摘要时指定占位符。 github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/… 就是一个很好的例子。 是的,如果调用tf.merge_all_summaries()之前没有summary,会返回None,导致异常。在只想从循环中收集数据的情况下,事先创建一个无意义的标量摘要似乎有点拖沓,为了我的钱,他们应该在这种情况下使用 tf.merge_summary() 手动收集摘要。

以上是关于合并张量板摘要时出错的主要内容,如果未能解决你的问题,请参考以下文章

tensorflow之张量扩张Broadcasting合并分割

杀死张量流实例后如何“重置”张量板数据

与故事板合并问题

tensorflow合并并压缩两个张量

如何在 Torch 的网络开头合并两个张量?

Tensor的合并与分割