python – tensorflow:检查标量布尔张量是否为True

我想使用占位符控制函数的执行,但不断收到错误“不允许使用tf.Tensor作为 Python bool”.以下是产生此错误代码

import tensorflow as tf
def foo(c):
  if c:
    print('This is true')
    #heavy code here
    return 10
  else:
    print('This is false')
    #different code here
    return 0

a = tf.placeholder(tf.bool)  #placeholder for a single boolean value
b = foo(a)
sess = tf.InteractiveSession()
res = sess.run(b,Feed_dict = {a: True})
sess.close()

我改变了,如果c,如果c不是没有运气没有.如何通过打开和关闭占位符a来控制foo?

更新:当@nessuno和@nemo指出时,我们必须使用tf.cond而不是if..else.我的问题的答案是重新设计我的功能,如下所示:

import tensorflow as tf
def foo(c):
  return tf.cond(c,func1,func2)

a = tf.placeholder(tf.bool)  #placeholder for a single boolean value
b = foo(a)
sess = tf.InteractiveSession()
res = sess.run(b,Feed_dict = {a: True})
sess.close()

解决方法

您必须使用 tf.cond在图表中定义条件操作,并因此更改张量的流程.

import tensorflow as tf

a = tf.placeholder(tf.bool)  #placeholder for a single boolean value
b = tf.cond(tf.equal(a,tf.constant(True)),lambda: tf.constant(10),lambda: tf.constant(0))
sess = tf.InteractiveSession()
res = sess.run(b,Feed_dict = {a: True})
sess.close()
print(res)

10

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...