我注意到在后续运行的Tensorflow脚本中,您的图形Ops会获得编号名称,例如:
loss = tf.reduce_mean(tf.nn.l2_loss(y - pred), name="l2_loss")
会得到名字:
l2_loss
l2_loss_1
l2_loss_2
...
l2_loss_N
继续在同一个IPython会话中进行相同的运行。这不会太烦人,除了稍后在脚本中要保存摘要时:
x_sample, y_sample = get_sample(X, Y)
feed = {x: x_batch, y: y_batch}
trainer.run(feed_dict=feed)
summary_str = summary_op.eval(feed_dict=feed)
你会得到以下失败:
InvalidArgumentError: You must feed a value for placeholder tensor 'x_input' with dtype float ....
有没有办法(在脚本或其他东西的顶部)取消所有这些旧的,过时的Op定义并使用当前运行并在创建变量时正确遵守name=...
命令,占位符和常量?
答案 0 :(得分:7)
对于您的后续问题,由于重新定义了您的互动会话,您可能会收到AssertionError
。
sess = InteractiveSession()
sess = InteractiveSession()
Exception AssertionError: AssertionError("Nesting violated for default stack of <type 'weakref'> objects") in ...
您可以先关闭会话sess.close()
。
答案 1 :(得分:3)
您可能希望将tf.reset_default_graph()
添加到设置图表的脚本的开头。这将从默认图表中删除所有现有的张量,变量和操作。这样,以前执行的脚本不会干扰。
我不确定,如果您收到的错误消息与此有关。您确定不会忘记为占位符x_input
提供值吗?您正在为占位符x
提供食物,如果可能是x_input
?