【问题标题】:Pytorch dimension changePytorch 尺寸变化
【发布时间】:2021-10-02 06:47:29
【问题描述】:

是否有任何方法可以将 [1,512,1,1] 更改为 [1,512,2,2] 张量。 我知道仅仅通过改变尺寸是不可能的。 PyTorch (torch.stack, torch.cat) 有什么方法可以使用 concat 或 stack

我用以下代码制作张量

a = torch.rand([1,512,1,1])

如何将其更改为尺寸为 [1,512,2,2] 的张量

【问题讨论】:

    标签: pytorch stack concatenation dimension


    【解决方案1】:

    那将是torch.repeat,这将复制数据:

    >>> a = a.repeat(1, 1, 2, 2)
    

    如果您不想复制数据,请使用torch.expand

    >>> a = a.expand(-1, -1, 2, 2)
    

    【讨论】:

    • 谢谢!这正是我想要的。重复和展开有什么区别?
    • expand 将使扩展尺寸参考(references 不是 copies)到原始尺寸,这意味着张量采用相同的内存量。另一方面,repeat 将复制数据;在您的情况下,从 (1, 512, 1, 1)(1, 512, 2, 2) 会使张量 a 占用 4 倍的内存。例如 - 使用expand - 如果你使用a[:, :, 0, 0] = 1,那么a[:, :, 0, 1]a[:, :, 1, 0]a[:, :, 1, 1] 也将是1,因为它们都引用相同的底层内存。
    【解决方案2】:

    我试过了

    tmp = torch.cat([a,a],2)
    a = torch.cat([tmp,tmp],3)
    

    【讨论】:

      猜你喜欢
      • 2018-06-12
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-19
      • 2019-05-20
      相关资源
      最近更新 更多