首页 > 解决方案 > PyTorch:.movedim() 与 .moveaxis() 与 .permute()

问题描述

.moveaxis()我对 PyTorch 完全陌生,我想知道在and方法方面我是否缺少任何东西.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))

标签: pythonpytorchtensor

解决方案


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

是的,这个功能可以用 来实现permute,但是移动一个轴同时保持所有其他轴的相对位置是一个足够常见的用例,可以保证它自己的语法糖。


  1. 术语取自numpy

    的别名torch.movedim()

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


推荐阅读