📌  相关文章
📜  AttributeError: 模块 'tensorflow' 没有属性 'placeholder' - Python (1)

📅  最后修改于: 2023-12-03 15:29:31.853000             🧑  作者: Mango

AttributeError: 模块 'tensorflow' 没有属性 'placeholder' - Python

在使用 Tensorflow 时,如果出现报错信息: AttributeError: 模块 'tensorflow' 没有属性 'placeholder',表示尝试在使用 Tensorflow 1.x 版本的代码中使用了 Tensorflow 2.x 版本的 API。在 Tensorflow 1.x 版本中,使用的是 tf.placeholder() 来定义占位符,而在 Tensorflow 2.x 版本中,则使用 tf.compat.v1.placeholder()

如何解决

如果使用的是 Tensorflow 2.x 版本,则直接使用 tf.placeholder() 会报错。此时,需要将代码中的 tf.placeholder() 替换为 tf.compat.v1.placeholder()

示例代码:

import tensorflow as tf

# 错误示范(Tensorflow 2.x 版本不支持)
x = tf.placeholder(dtype=tf.float32, shape=[None, 784], name='x')

# 正确示范(Tensorflow 2.x 版本使用兼容模式)
x = tf.compat.v1.placeholder(dtype=tf.float32, shape=[None, 784], name='x')

如果希望代码在 Tensorflow 1.x 和 Tensorflow 2.x 版本中都能运行,可以使用以下方式:

import tensorflow.compat.v1 as tf

# 定义占位符
x = tf.placeholder(tf.float32, shape=[None, 784], name='x')
y = tf.placeholder(tf.float32, shape=[None, 10], name='y')

# 其他操作
# ...

# 初始化
init_op = tf.global_variables_initializer()

# 创建会话
with tf.Session() as sess:
    sess.run(init_op)
    # 其他操作
    # ...
参考资料