【问题标题】:How to check whether tensor values in a different tensor pytorch?如何检查不同张量pytorch中的张量值是否?
【发布时间】:2021-05-08 04:58:40
【问题描述】:

我有 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 中

【问题讨论】:

    标签: python python-3.x pytorch torch


    【解决方案1】:

    我认为不使用至少某种类型的迭代是不可能的。我能管理的最简洁的方法是使用列表理解:

    [True if i in b else False for i in a]
    

    检查 b 中是否存在 a 中的元素并给出 [False, True, False]。也可以反过来得到b中的元素a [False, True]。

    【讨论】:

      【解决方案2】:

      这应该可以工作

      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
      

      【讨论】:

        【解决方案3】:

        如果您需要比较a 的第一个维度上的所有子张量,请使用in

        >>> [i in b for i in a]
        [False, True, False]
        

        【讨论】:

          猜你喜欢
          • 2021-05-14
          • 2021-03-30
          • 1970-01-01
          • 2019-04-21
          • 2021-10-11
          • 1970-01-01
          • 2021-02-07
          • 2018-09-18
          • 2020-08-05
          相关资源
          最近更新 更多