tensorflow升级到2.1了,出现了如下错:
RuntimeError: tf.placeholder() is not compatible with eager execution.
这是因为在运行**tf.compat.v1.placeholder(dtype, shape = None, name = None)**的时候急切执行了这条语句,但是我们一般都是在一个Session前先去定义placeholder,但是不会去执行,然后再在Sesion上下文管理器中去传入我们的数据,然后执行。
这里给出一个方法(对我有效)
在代码中添加这样一句:
tf.compat.v1.disable_eager_execution()
例子
Error
import tensorflow as tf
import numpy as np
#tf.compat.v1.disable_eager_execution()
x = tf.compat.v1.placeholder(tf.float32, shape=(1024, 1024))
y = tf.matmul(x, x)
with tf.compat.v1.Session() as sess:
print(sess.run(y))
# rand_array = np.random.rand(1024, 1024)
# print(sess.run(y, feed_dict={x: rand_array}))
1
2
3
4
5
6
7
8
9
10
11
RuntimeError: tf.placeholder() is not compatible with eager execution.
Correct
import tensorflow as tf
import numpy as np
tf.compat.v1.disable_eager_execution()
x = tf.compat.v1.placeholder(tf.float32, shape=(1024, 1024))
y = tf.matmul(x, x)
with tf.compat.v1.Session() as sess:
# print(sess.run(y))
rand_array = np.random.rand(1024, 1024)
print(sess.run(y, feed_dict={x: rand_array}))