【问题标题】:TensorFlow not playing nicely with IPythonTensorFlow 不能很好地与 IPython 配合使用
【发布时间】:2018-04-26 14:04:17
【问题描述】:

我正在尝试使用 IPython 笔记本中的 TensorFlow。我创建了一个定义占位符和变量的函数。由于我是 TensorFlow 新手,所以我没有正确初始化变量并收到错误消息说我没有初始化占位符。

我有两个单元格,一个带有函数,一个带有函数调用。不管我修复了多少函数(当然是重新运行两个单元格),即使修复了错误,我也会不断收到初始化错误。

让它工作的唯一方法是重新启动内核,这几乎超出了笔记本的用途,我可以编写一个 Python 脚本。

【问题讨论】:

    标签: python tensorflow ipython jupyter-notebook


    【解决方案1】:

    这主要是没有看到你的代码的猜测,但从我读到的内容我相信知道你做错了什么。

    在笔记本中使用 Tensorflow 时,您必须特别注意不要将图形 构建 代码与 评估 代码混淆。您只需要并且应该在开始时定义一次计算图。再次执行定义图的函数只会构建另一个子图(这可能也适用于定义占位符和变量的函数)。 tf.global_variables_initializer 操作也应该只执行一次。

    理解Tensorflow图不能被notebook动态处理是至关重要的,因为python实际上并不控制Tensorflow变量。在这种情况下,Python 只是一种用于定义图形和启动计算的元语言。

    因此,在完全初始化图表一次之后的笔记本中,您只能调用包装 Tensorflow 图表评估代码的函数,而不是在不重置内核的情况下动态构建图表代码。仅评估现有图的此类方法的示例是 session.run、其他 tf.Session 方法或类似的评估方法,如 tensor.eval

    所以是的,要明确一点,如果不重建它就无法更改已经构建的图,在这种情况下需要重置内核,除非你只是一遍又一遍地构建新的子图(并初始化新变量)但是这会在某个时候耗尽所有可用内存。

    【讨论】:

      猜你喜欢
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-25
      相关资源
      最近更新 更多