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

 

### TensorFlowTensor 和 Numpy 数组之间的转换 在 TensorFlow 中,可以方便地实现 `tensor` 类型数据与 NumPy 数组间的相互转换。对于将 `tensor` 转换为 NumPy 数组的操作,在不同版本的 TensorFlow 下有不同的方法。 #### 使用 `.numpy()` 方法 (适用于 TensorFlow 2.x) 当使用的是 TensorFlow 2.x 版本时,可以直接调用张量对象上的 `.numpy()` 方法来获取对应的 NumPy 数组表示形式[^1]: ```python import tensorflow as tf # 创建一个简单的常量张量 t = tf.constant([[1, 2], [3, 4]]) # 将其转换为 numpy 数组 n = t.numpy() print(n) ``` 这种方法简单直观,并且不需要额外创建会话环境。 #### 使用 Session 的 eval() 函数 (适用于 TensorFlow 1.x 或兼容模式下的 2.x) 如果是在 TensorFlow 1.x 环境下工作,则可以通过启动一个新的会话并调用 `eval()` 来完成这一过程[^3]: ```python import tensorflow.compat.v1 as tf tf.disable_v2_behavior() def tensor_to_numpy(tensor): with tf.Session() as sess: result = tensor.eval(session=sess) return result # 测试上述定义的方法 a_tensor = tf.constant([5]) converted_array = tensor_to_numpy(a_tensor) print(converted_array) ``` 需要注意的是,在 TensorFlow 2.x 中,默认情况下已经不再支持显式的 session 概念;但如果启用了 v1 行为(即禁用了 eager execution),那么仍然可以用这种方式来进行转换。 另外值得注意的一点是 PyTorch 提供了一个更简洁的方式通过 `from_numpy()` 函数直接由 NumPy 数组构建 PyTorch 张量,并保持两者共享内存空间从而同步更新[^2]。不过这并不影响 TensorFlow 自身提供的两种主要转换手段的有效性和适用范围。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值