2个张量的按位或运算 torch

如何在torch中对两个张量执行按位与/或操作?

假设我有两个ByteTensors a和b,我想在它们之间计算逻辑and/or。是否可以使用函数来执行此操作?

点赞
用户213123
用户213123

在 Torch 中,张量没有按位与/或运算。但是,如果您可以将每个位作为单独的张量维度(例如,在数据准备步骤中或使用 bitop),则可以使用 Torch.any(x) 作为逐元素或操作。

更新:正如 mattdns 建议 的那样,使用 torch.cmul 和 torch.add 更有意义。

a = torch.Tensor{0,1,1,0}
b = torch.Tensor{0,1,0,1}

th> torch.cmul(a,b):eq(1)
 0
 1
 0
 0
[torch.ByteTensor of size 4]

th> torch.add(a,b):ge(1)
 0
 1
 1
 1
[torch.ByteTensor of size 4]
2016-08-04 21:07:58
用户5407700
用户5407700

不确定这是否是你要的,但可能会有帮助。

x = torch.ByteTensor{1,1,0,0,0,0,1}
y = torch.ByteTensor{0,1,0,1,0,1,1}

并且

z = torch.cmul(x,y) -- 这样做会得到and结果
th> z
 0
 1
 0
 0
 0
 0
 1
[torch.ByteTensor of size 7]

或者

z1 = torch.add(x,y)
z1[z1:gt(1)] = 1 -- 去掉重复计算

th> z1
 1
 1
 0
 1
 0
 1
 1
[torch.ByteTensor of size 7]
2016-08-06 15:08:54