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

在新版本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.]
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值