为什么我会收到 AttributeError: module 'tensorflow' has no attribute 'placeholder' 错误?

11

我三周前能够运行我的Python程序,但现在每次尝试运行它时,我都会收到以下错误信息:

AttributeError: module 'tensorflow' has no attribute 'placeholder'
我已经安装了tensorflow(版本为“2.0.0-alpha0”)。我看过几篇与此问题相关的帖子。它们都说我应该卸载TensorFlow并重新安装。问题是我在一个集群计算机上运行,我没有sudo权限。任何想法吗?

这可能会有所帮助:https://dev59.com/SFoU5IYBdhLWcg3wg3II - smitty_werbenjagermanjensen
@JoeA 谢谢,但是这并不适用...正如我所说,我是从一个集群中进行操作的。 - user11400799
5个回答

10
在Tensorflow 2.0中,没有占位符。您需要将TF1.x代码更新为TF2.0代码,然后在集群上运行它。请参阅官方文档以将您的TF1.x代码转换为TF2.0。
在TF1.x代码中,您使用占位符、常量和变量构建tensorflow图(静态图)。然后,在tf.session()命令下运行代码会话。在该会话期间,您提供占位符的值并执行静态图。
在TF2.0中,模型随着输入命令而立即运行,这更具有Python风格。了解更多关于TF 2.0的详情。谢谢!

10

在包含TensorFlow兼容v1库后:

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()`

使用以下v1语法:

X = tf.compat.v1.placeholder(dtype="float",shape=[None, n_H0, n_W0, n_C0])
Y = tf.compat.v1.placeholder(dtype="float",shape=[None, n_y]) 

这个可以用,我们是在导入正确的版本1 tensorflow吗? - Swapnil

5

除了@Vishnuvardhan Janapati的回答,您可以将文件夹(“*TREE”)和/或文件更新到TensorFlow的第2版。 升级工具tf_upgrade_v2已自动包含在TensorFlow 1.13及更高版本中。

tf_upgrade_v2 [-h] [--infile INPUT_FILE] [--outfile OUTPUT_FILE]
                   [--intree INPUT_TREE] [--outtree OUTPUT_TREE]
                   [--copyotherfiles COPY_OTHER_FILES] [--inplace]
                   [--reportfile REPORT_FILENAME] [--mode {DEFAULT,SAFETY}]
                   [--print_all]

下面是说明如何解决“占位符”错误的图示:

输入图像描述

注意:这个修复方法也可以解决类似于“模块'tensorflow'没有属性'xxxxx'”(不仅仅是“占位符”)的报错。


4

更改库对我有用

#libraries
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

如果这不起作用,也许你需要重新安装TensorFlow。

希望它有所帮助。


3

调用 disable_v2_behavior() 函数并非必要操作。

只需:

import tensorflow as tf

tf.compat.v1.placeholder()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接