如何检查不同张量pytorch中的张量值是否?
How to check whether tensor values in a different tensor pytorch?
我有 2 个大小不等的张量
a = torch.tensor([[1,2], [2,3],[3,4]])
b = torch.tensor([[4,5],[2,3]])
我想要一个布尔数组,表示每个值是否存在于另一个张量中而不进行迭代。像
a in b
结果应该是
[False, True, False]
因为只有 a[1] 的值在 b
我认为不使用至少某种类型的迭代是不可能的。我可以管理的最简洁的方法是使用列表理解:
[True if i in b else False for i in a]
检查 a 中 b 中的元素并给出 [False, True, False]。也可以反转得到元素a in b [False, True].
这应该有效
result = []
for i in a:
try: # to avoid error for the case of empty tensors
result.append(max(i.numpy()[1] == b.T.numpy()[1,i.numpy()[0] == b.T.numpy()[0,:]]))
except:
result.append(False)
result
如果您需要比较 a
第一维的所有子张量,请使用 in
:
>>> [i in b for i in a]
[False, True, False]
我有 2 个大小不等的张量
a = torch.tensor([[1,2], [2,3],[3,4]])
b = torch.tensor([[4,5],[2,3]])
我想要一个布尔数组,表示每个值是否存在于另一个张量中而不进行迭代。像
a in b
结果应该是
[False, True, False]
因为只有 a[1] 的值在 b
我认为不使用至少某种类型的迭代是不可能的。我可以管理的最简洁的方法是使用列表理解:
[True if i in b else False for i in a]
检查 a 中 b 中的元素并给出 [False, True, False]。也可以反转得到元素a in b [False, True].
这应该有效
result = []
for i in a:
try: # to avoid error for the case of empty tensors
result.append(max(i.numpy()[1] == b.T.numpy()[1,i.numpy()[0] == b.T.numpy()[0,:]]))
except:
result.append(False)
result
如果您需要比较 a
第一维的所有子张量,请使用 in
:
>>> [i in b for i in a]
[False, True, False]