Pytorch中View和Permute函数比较

View和Permute函数

  • 描述
  • 实验
  • 结论

描述

View和Permute函数都可以用来reshape(调整矩阵形状),本文主要用来测试其不同点。

实验

测试代码:

def test_view_permute():origin = torch.arange(12).view(3, 4)print(origin)dest1 = origin.view(4, 3)dest2 = origin.permute(1, 0)print(f'dest1, {dest1}')print(f'dest2, {dest2}')

输出结果:

tensor([[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]])
dest1, tensor([[ 0,  1,  2],[ 3,  4,  5],[ 6,  7,  8],[ 9, 10, 11]])
dest2, tensor([[ 0,  4,  8],[ 1,  5,  9],[ 2,  6, 10],[ 3,  7, 11]])

在控制台输出详细信息:

dest1.is_contiguous()
True
dest2.is_contiguous()
False
dest1.stride()
(3, 1)
dest2.stride()
(1, 4)

结论

使用View时,是在连续数据上进行reshape(原始数据origin[1][2]!=dest1[2][1]);
使用Permute时,是在维度上做了变换,类似于转置T,(原始数据origin[1][2]==dest1[2][1])。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部