有没有比 for 循环更快的方法来比较两个张量中的两行?
is there a faster way to compare two raws in a two tensors than for loop?
我是 pytorch 的新手,我想检查 tensor1
中的每个元素是否属于 tensor2
中同一行的一部分,例如,如果我有两个张量如下:
a = torch.tensor([[0,5],[1,5], [4,5], [7,8]])
b = torch.tensor([[0,1],[2,3], [7,5], [-1,7]])
输出应如下所示:
[ True, False]
[False, False]
[False, False]
[False, False]
[False, False]
[False, True]
[False, True]
[False, False]
我知道我可以使用一个简单的 for 循环来完成,但是在 pytorch
中有没有更快的方法?
你需要对两个张量使用 repeat_interleave
然后 reshape
第一个张量,然后你将它与另一个张量进行比较
像这样
res = a.repeat_interleave(2, dim=1).reshape(-1, 2) == b.repeat_interleave(2, dim=0)
输出应该如下
output
tensor([[ True, False],
[False, False],
[False, False],
[False, False],
[False, False],
[False, True],
[False, True],
[False, False]])
输出是张量。如果你需要它而不用 []
你可以使用 flatten
方法
我是 pytorch 的新手,我想检查 tensor1
中的每个元素是否属于 tensor2
中同一行的一部分,例如,如果我有两个张量如下:
a = torch.tensor([[0,5],[1,5], [4,5], [7,8]])
b = torch.tensor([[0,1],[2,3], [7,5], [-1,7]])
输出应如下所示:
[ True, False]
[False, False]
[False, False]
[False, False]
[False, False]
[False, True]
[False, True]
[False, False]
我知道我可以使用一个简单的 for 循环来完成,但是在 pytorch
中有没有更快的方法?
你需要对两个张量使用 repeat_interleave
然后 reshape
第一个张量,然后你将它与另一个张量进行比较
像这样
res = a.repeat_interleave(2, dim=1).reshape(-1, 2) == b.repeat_interleave(2, dim=0)
输出应该如下
output
tensor([[ True, False],
[False, False],
[False, False],
[False, False],
[False, False],
[False, True],
[False, True],
[False, False]])
输出是张量。如果你需要它而不用 []
你可以使用 flatten
方法