我想将整数张量转换为布尔张量。
具体来说,我希望能够拥有一个将 tensor([0,10,0,16])
转换为 tensor([0,1,0,1])
的函数
这在 Tensorflow 中很简单,只需使用 tf.cast(x,tf.bool)
。
我希望强制转换将所有大于 0 的整数更改为 1,将所有等于 0 的整数更改为 0。这在大多数语言中等同于 !!
。
由于 pytorch 似乎没有专用的布尔类型可以转换为,这里最好的方法是什么?
编辑:我正在寻找一种矢量化解决方案,而不是循环遍历每个元素。
原文由 Ross 发布,翻译遵循 CC BY-SA 4.0 许可协议
您正在寻找的是为给定的整数张量生成一个 布尔掩码。为此,您可以使用简单的比较运算符(
>
)或使用torch.gt()
简单地检查条件:“张量中的值是否大于 0”,然后给出我们想要的结果。注意:在 PyTorch 1.4+ 版本中,上述操作将返回
'torch.BoolTensor'
如果您确实想要单个位(
0
s 或1
s),请使用:此更改的原因已在此功能请求问题中进行了讨论: issues/4764 - Introduce torch.BoolTensor …
TL;DR : 简单的一个班轮