ошибка при объединении сводок для tensorboard

Я пытаюсь создать график для учебника для начинающих 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()

person lex    schedule 18.11.2015    source источник


Ответы (1)


У меня была такая же ошибка.

В моем случае добавление хотя бы одного tf.scalar_summary() перед вызовом tf.merge_all_summaries() решило проблему.

Например,

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

Я надеюсь, что этот фрагмент поможет вам.

person kivantium    schedule 18.11.2015
comment
Я думал сделать то же самое, но все еще пытаюсь понять, почему код примера не собирает сводку скаляра/гистограммы: github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/ - person lex; 18.11.2015
comment
Потому что код примера вызывает tf.scalar_summary() в training(), определенном в mnist.py (импортирован full_connected_feed.py). См. github.com/tensorflow/tensorflow /blob/мастер/tensorflow/g3doc/ - person kivantium; 19.11.2015
comment
добавление кода для объединения сводок приводит к следующей ошибке, в противном случае работает нормально. 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 <module> x = tf.placeholder("float", [None, 784]) - person lex; 22.11.2015
comment
Я предполагаю, что ваша проблема в том, что вы не указали заполнитель при запуске сеанса. Вы должны указать заполнитель при запуске сеанса для объединения сводок. github.com/tensorflow/tensorflow/ blob/master/tensorflow/g3doc/ — хороший пример. - person kivantium; 22.11.2015
comment
Да, если перед вызовом tf.merge_all_summaries() нет сводки, она вернет None, что вызовет исключение. В ситуации, когда кто-то хочет собрать данные только из цикла, предварительное создание бессмысленной скалярной сводки кажется немного затянутым, и, на мой взгляд, в этом случае они должны использовать tf.merge_summary() для сбора сводки вручную. - person Isilmë O.; 24.11.2015