【问题标题】:pytorch view tensor and reduce one dimensionpytorch查看张量并减少一维
【发布时间】:2021-01-25 10:11:09
【问题描述】:

所以我有一个形状为 [4,1,128,678] 的 4d 张量,我想将其查看/重塑为 [4,678,128]

我必须对多个张量执行此操作,其中最后一个形状值 678 并不总是已知并且可能不同,所以[4,1,128,575]也应该转到[4,575,128]

你知道变换张量的最佳操作是什么吗?查看/重塑?以及如何?

谢谢

【问题讨论】:

    标签: python deep-learning pytorch


    【解决方案1】:

    您也可以使用(更少的编写和 IMO 更清洁):

    # x.shape == (4, 1, 128, 678)
    x.squeeze().permute(0, 2, 1)
    

    如果您要使用view,您会丢失维度信息(但也许这正是您想要的),在这种情况下,它将是:

    x.squeeze().view(4, -1, 128)
    

    permute 对张量进行重新排序,而 shape 仅提供不同的视图没有重构底层内存。你可以看到这两个操作的区别in this StackOverflow answer

    【讨论】:

      【解决方案2】:

      改用einops,它可以一次完成所有操作并验证已知尺寸:

      from einops import reshape
      y = rearrange(x, 'x 1 y z -> x z y', x=4, y=128)
      

      【讨论】:

        猜你喜欢
        • 2019-08-23
        • 2020-12-18
        • 2016-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-26
        • 2021-07-13
        • 2021-04-23
        相关资源
        最近更新 更多