【问题标题】:dimension extension with pytorch tensors使用 pytorch 张量进行维度扩展
【发布时间】:2021-02-10 08:33:35
【问题描述】:

pytorch张量维度扩展的方式是什么?

-之前: 火炬.Size([3, 3, 3])

tensor([[[ 0.,  1.,  2.],
         [ 3.,  4.,  5.],
         [ 6.,  7.,  8.]],

        [[ 9., 10., 11.],
         [12., 13., 14.],
         [15., 16., 17.]],

        [[18., 19., 20.],
         [21., 22., 23.],
         [24., 25., 26.]]], device='cuda:0', dtype=torch.float64)

-之后: 火炬.Size([2, 3, 3, 3])

tensor([[[[ 0.,  1.,  2.],
          [ 3.,  4.,  5.],
          [ 6.,  7.,  8.]],

         [[ 9., 10., 11.],
          [12., 13., 14.],
          [15., 16., 17.]],

         [[18., 19., 20.],
          [21., 22., 23.],
          [24., 25., 26.]]],


        [[[0., 1., 2.],
          [ 3.,  4.,  5.],
          [ 6.,  7.,  8.]],

         [[ 9., 10., 11.],
          [12., 13., 14.],
          [15., 16., 17.]],

         [[18., 19., 20.],
          [21., 22., 23.],
          [24., 25., 26.]]]], device='cuda:0', dtype=torch.float64)

在 numpy 下会这样工作:

b =  np.broadcast_to(a1[None, :,:,:], (2,3,3,3))

这在 pytorch 下是如何工作的?我想利用gpu。提前感谢您的帮助!

【问题讨论】:

    标签: pytorch gpu tensor dimensions


    【解决方案1】:

    可以用unsqeeze添加一个新维度(0在下面用于指定第一个维度,即位置0),然后沿着该维度重复数据两次(一次,即不重复) ,沿其他维度)。

    before = torch.tensor(..., dtype=torch.float64, device='cuda:0')
    after = before.unsqueeze(0).repeat(2, 1, 1, 1)
    

    【讨论】:

      【解决方案2】:

      我们可以将torch.Tensor.expand 用于您给定的预期结果

      b = a1.expand([2, 3, 3, 3])
      

      【讨论】:

        猜你喜欢
        • 2021-06-10
        • 2022-07-08
        • 2021-10-23
        • 2017-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-26
        • 1970-01-01
        相关资源
        最近更新 更多