请直接看文章末尾
tensorflow虽然支持bool类型,却貌似不支持取反操作。
思路如下:
不太好描述,请仔细观察这个式子,其中' == '就相当于 tf.equal() 函数,相等返回 true, 不等返回 false。
原始值 运算符 运算值 结果
true == false ==> false # true 与 false 不相等,返回 false
false == false ==> true # false 与 false 相等,返回 true
观察第一列与最后一列,是不是 true 变成了 false, 而 false 变成了 true
也就是说,只要一个 Bool 值与 false 进行比较,就能够得到他的相反值,即取反。
看代码:
import tensorflow as tf
if __name__ == "__main__":
d = tf.constant([[True,False], [True,False], [True,False], [True,False]])
# 得到相同形状的 false
mask = tf.cast(tf.zeros_like(d), tf.bool)
# 进行 equal 运算
s = tf.equal(mask, d)
with tf.Session() as sess:
print("原始值")
print(sess.run(d))
print("运算后")
print(sess.run(s))
输出值:
原始值
[[ True False]
[ True False]
[ True False]
[ True False]]
运算后
[[False True]
[False True]
[False True]
[False True]]
可以看到,全部取反了。
更新:
tf.logical_not(tensor)
上述式子实现了取反操作,还有这些逻辑操作
tf.logical_and(x, y, name=None)
tf.logical_not(x, name=None)
tf.logical_or(x, y, name=None)
tf.logical_xor(x, y, name='LogicalXor')