欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RuntimeError: tf.placeholder() is not compatible with eager execution.和没有placeholder函数解决方法

程序员文章站 2022-06-15 13:49:35
...

在新版本tensorflow (1.15.0,2.0及以上) 中由于没有tf.placeholder占位符,函数调用应为:

a = tf.compat.v1.placeholder(dtype=tf.float32)

但这样placeholder在运行时会被立刻执行发生报错,为了让它只作为一个定义而不被立刻运行,等到session部分再运行,应在前面加上:

tf.compat.v1.disable_eager_execution()  # 使placeholder只被定义,防止placeholder立刻被执行

整体程序为(以相加为例):

# 使用占位符构建计算

tf.compat.v1.disable_eager_execution()  # 使placeholder只被定义,防止placeholder立刻被执行
a = tf.compat.v1.placeholder(dtype=tf.float32)
b = tf.compat.v1.placeholder(dtype=tf.float32)  # 创建两个占位节点
adder = a + b
print(a)
print(b)
print(adder)

tf.compat.v1.disable_eager_execution()  # 无法直接调用tf.Session
sess = tf.compat.v1.Session()
print(sess.run(adder, {a: 3, b: 4}))
print(sess.run(adder, {a: [1,3], b: [2,3]}))

运行结果为:


Tensor("Placeholder:0", dtype=float32)
Tensor("Placeholder_1:0", dtype=float32)
Tensor("add:0", dtype=float32)
7.0
[3. 6.]