首页 文章

如何将一个pytorch张量的int转换为一个booleans?

提问于
浏览
0

我想对张量的布尔值投入一个量子 .

具体来说,我希望能够有一个将 tensor([0,10,0,16]) 转换为 tensor([0,1,0,1]) 的函数

通过使用 tf.cast(x,tf.bool) ,这在Tensorflow中是微不足道的 .

我希望强制转换将所有大于0的整数更改为1,并将所有整数等于0更改为0.在大多数语言中,这相当于 !! .

由于pytorch似乎没有专门的布尔类型来强制转换,这里最好的方法是什么?

编辑:我正在寻找一个矢量化的解决方案,反对循环每个元素 .

2 回答

  • 1

    您可以使用以下代码段中显示的比较 .

    a = tensor([0,10,0,16])
     result = (a == 0)
    

    会给

    tensor([1, 0, 1, 0], dtype=torch.uint8)
    
  • 2

    您正在寻找的是为给定的整数张量生成 boolean mask . 为此,您可以简单地检查条件:值是否大于0,这将给出所需的结果 .

    # input tensor
    In [76]: t   
    Out[76]: tensor([ 0, 10,  0, 16])
    
    # generate the needed boolean mask
    In [78]: t > 0      
    Out[78]: tensor([0, 1, 0, 1], dtype=torch.uint8)
    

    # sanity check
    In [93]: mask = t > 0      
    
    In [94]: mask.type()      
    Out[94]: 'torch.ByteTensor'
    

相关问题