【问题标题】:How do i iterate over pytorch 2d tensors?我如何迭代 pytorch 2d 张量?
【发布时间】:2020-10-28 16:41:52
【问题描述】:
X = np.array([
    [-2,4,-1],
    [4,1,-1],
    [1, 6, -1],
    [2, 4, -1],
    [6, 2, -1],
    ])

for epoch in range(1,epochs):
    for i, x in enumerate(X):

X = torch.tensor([
    [-2,4,-1],
    [4,1,-1],
    [1, 6, -1],
    [2, 4, -1],
    [6, 2, -1],
    ])

当它是一个 numpy 数组时,循环很好。但我想使用 pytorch 张量,所以有什么替代枚举或如何在第二行循环遍历上述张量?

【问题讨论】:

  • 这个问题是关于一次聚合多个迭代(在本例中为张量)@AragonS - 因此建议使用zip

标签: python numpy pytorch tensor


【解决方案1】:

迭代 pytorch 张量或 numpy 数组比迭代列表慢得多。

将您的张量转换为列表并对其进行迭代:

l = tens.tolist()

如果您需要将张量从计算图中分离出来,则需要detach()

l = tens.detach().tolist()

或者,您可以使用 numpy 数组并在二维数组的每一行上使用它的一些快速函数,以便从该行中获取您需要的值。

【讨论】:

    【解决方案2】:
    x = torch.tensor([ 
                     [-2,4,-1],
                     [4,1,-1],
                     [1, 6, -1],
                     [2, 4, -1],
                     [6, 2, -1],
                              ])
    
    for i in x:
        print(i)
    

    输出:

    tensor([-2,  4, -1])
    tensor([ 4,  1, -1])
    tensor([ 1,  6, -1])
    tensor([ 2,  4, -1])
    tensor([ 6,  2, -1])
    

    【讨论】:

      【解决方案3】:

      enumerate 需要一个可迭代的,因此它也适用于 pytorch 张量:

      X = torch.tensor([
          [-2,4,-1],
          [4,1,-1],
          [1, 6, -1],
          [2, 4, -1],
          [6, 2, -1],
          ])
      
      for i, x in enumerate(X):
          print(x)
          tensor([-2,  4, -1])
          tensor([ 4,  1, -1])
          tensor([ 1,  6, -1])
          tensor([ 2,  4, -1])
          tensor([ 6,  2, -1])
      

      如果你想遍历底层数组:

      for i, x in enumerate(X.numpy()):
          print(x)
          [-2  4 -1]
          [ 4  1 -1]
          [ 1  6 -1]
          [ 2  4 -1]
          [ 6  2 -1]
      

      但请注意,pytorch 的底层数据结构是 numpy 数组,因此您可能希望在执行操作时避免在张量上循环,并且应该考虑通过 pytorch 或麻木。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-14
        • 1970-01-01
        • 2019-08-24
        • 1970-01-01
        • 1970-01-01
        • 2021-06-17
        • 1970-01-01
        相关资源
        最近更新 更多