📅  最后修改于: 2023-12-03 15:29:31.853000             🧑  作者: Mango
在使用 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)
# 其他操作
# ...