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