module ‘tensorflow’ has no attribute ‘placeholder’
究其原因是因为tf.placeholder是这个是tensorflow1.x版本的东西,tensorflow2.0就不能用了
改变方法1:
tf.compat.v1.placeholder(tf.float32,[None,784])
改变方法2:
不使用
import tensorflow as tf
而使用
import tensorflow.compat.v1 as tf tf.disable_v2_behavior()
当你满心欢喜的以为可以使用了的时候,却发现:
RuntimeError: tf.placeholder() is not compatible with eager execution.
RuntimeError: tf.placeholder() is not compatible with eager execution.
那是因为:这是因为在运行
t
f
.
c
o
m
p
a
t
.
v
1.
p
l
a
c
e
h
o
l
d
e
r
(
d
t
y
p
e
,
s
h
a
p
e
=
N
o
n
e
,
n
a
m
e
=
N
o
n
e
)
tf.compat.v1.placeholder(dtype, shape = None, name = None)
tf.compat.v1.placeholder(dtype,shape=None,name=None)的时候急切执行了这条语句,但是我们一般都是在一个Session前先去定义placeholder,但是不会去执行,然后再在Sesion上下文管理器中去传入我们的数据,然后执行。
所以,我们需要在上面的语句前定义一下它不着急执行,有两种解决方案:
方案1
tf.compat.v1.disable_eager_execution()
x = tf.compat.v1.placeholder(tf.float32, [None, 784])
方案2
tf.compat.v1.disable_v2_behavior()
x = tf.compat.v1.placeholder(tf.float32, [None, 784])