PyTorch:.movedim() vs. .moveaxis() vs. .permute()

3

我完全不了解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))
1个回答

5

是的,moveaxismovedim 的别名(类似于 swapaxesswapdims1

是的,使用 permute 可以实现此功能,但保持其他所有轴的相对位置而移动一个轴是一个常见的用例,因此有必要提供这种语法糖。


  1. 该术语取自 numpy

    torch.movedim() 的别名。

    此函数等同于 NumPy 的 moveaxis 函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接