【问题标题】:Tensorflow Op Naming for Consecutive Runs in Interactive IPython terminal交互式 IPython 终端中连续运行的 Tensorflow Op 命名
【发布时间】:2023-03-31 01:25:02
【问题描述】:

我注意到,在随后运行 Tensorflow 脚本时,您的图形操作会获得编号名称,例如:

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=... 命令,和常量?

【问题讨论】:

    标签: python ipython tensorflow


    【解决方案1】:

    对于您的后续问题,由于重新定义了交互式会话,您可能会收到 AssertionError

    sess = InteractiveSession()
    sess = InteractiveSession()
    Exception AssertionError: AssertionError("Nesting violated for default stack of <type 'weakref'> objects") in ...
    

    您可以通过先关闭会话来避免这种情况,sess.close()

    【讨论】:

      【解决方案2】:

      您可能希望将tf.reset_default_graph() 添加到您设置图表的脚本的开头。这会从默认图中删除所有现有的张量、变量和操作。这样之前执行的脚本就不会受到干扰。

      不过,我不确定您收到的错误消息是否与此有关。您确定您不只是忘记为占位符x_input 提供值吗?您正在为占位符 x 喂食,应该是 x_input 吗?

      【讨论】:

      • 不,我从其他地方复制了该代码,我将编辑问题。太好了,如果我在创建会话之前添加,tf.reset_default_graph() 似乎可以工作。不过,我确实收到了一个有趣的警告:Exception AssertionError: AssertionError("Nesting violated for default stack of &lt;type 'weakref'&gt; objects",) in &lt;bound method InteractiveSession.__del__ of &lt;tensorflow.python.client.session.InteractiveSession object at 0x115099210&gt;&gt; ignored,知道这是什么意思吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-05
      • 2020-08-24
      • 1970-01-01
      • 2013-07-28
      • 1970-01-01
      • 2012-07-12
      相关资源
      最近更新 更多