【问题标题】:check if a tensor included in bigger tensor in pytorch检查 pytorch 中较大张量中是否包含张量
【发布时间】:2021-05-14 09:24:38
【问题描述】:

如何检查,例如:

torch.tensor([1, 3]) 属于torch.tensor([3, 1], [1, 1], [3, 1])

a in b 方法按元素进行比较,因此这里不正确

我要计算的是整个张量 [1, 3] 是否在更大的张量中

谢谢

【问题讨论】:

  • 你如何定义[1, 3]大于[3, 1]
  • 请参考我对此question的回答
  • 所以你想检查你的张量是否是更大张量的子张量,对吗?就像上面的例子一样,你希望输出是正的(它在较大的那个中,但是被置换了)还是不是(它不在更大的那个中)?
  • 要做的任务是检查张量a的每个子张量是否存在于张量b中。这与哪个更大或更小无关

标签: pytorch


【解决方案1】:

我们用下面的例子来说明答案:

a = torch.tensor([[4,5],[2,3], [5,3]])
b = torch.tensor([[1,2], [2,3],[3,4],[7,7],[3,5]])

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

输出将显示:[False, True, False]

【讨论】:

  • 好的,那么这个例子有什么问题呢?这与您在上面的 cmets 中链接自己的问题有什么不同?因为这里的结果是[False, True, False]
  • 这里没有错我只是在回答我自己的问题,我正在寻找 PyTorch 中执行此操作的预定义函数。一旦我没有找到任何东西,我就实施了这个解决方案
猜你喜欢
  • 2021-05-08
  • 2019-04-21
  • 2021-03-30
  • 2020-03-01
  • 1970-01-01
  • 2021-07-05
  • 2021-10-11
  • 2021-02-07
  • 2021-08-15
相关资源
最近更新 更多