tensorflow中tensor布尔(bool)类型取反

请直接看文章末尾


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')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值