【问题标题】:PyTorch: .movedim() vs. .moveaxis() vs. .permute()PyTorch:.movedim() 与 .moveaxis() 与 .permute()
【发布时间】:2021-09-03 14:07:47
【问题描述】:

我对 PyTorch 完全陌生,我想知道在 .moveaxis().movedim() 方法方面我是否缺少任何东西。对于相同的参数,输出完全相同。也不能这两种方法都换成.permute()吗?


一个例子供参考:

import torch

mytensor = torch.randn(3,6,3,1,7,21,4)

t_md = torch.movedim(mytensor, 2, 5)
t_ma = torch.moveaxis(mytensor, 2, 5)

print(t_md.shape, t_ma.shape)
print(torch.allclose(t_md, t_ma))

t_p = torch.permute(mytensor, (0, 1, 3, 4, 5, 2, 6))

print(t_p.shape)
print(torch.allclose(t_md, t_p))

【问题讨论】:

    标签: python pytorch tensor


    【解决方案1】:

    是的,moveaxismovedim 的别名(类似于swapaxesswapdims)。1

    是的,这个功能可以通过 permute 实现,但是移动一个轴同时保持所有其他轴的相对位置是 common enough use-case 以保证它自己的语法糖。


    1. 术语取自numpy

      torch.movedim() 的别名。

      这个函数相当于 NumPy 的 moveaxis 函数。

    【讨论】:

      猜你喜欢
      • 2020-10-05
      • 2021-08-28
      • 2020-09-05
      • 2020-12-26
      • 2022-12-18
      • 2021-09-22
      • 2021-03-03
      • 2021-12-01
      • 2019-11-27
      相关资源
      最近更新 更多