PyTorch 中,Tensor viewpermutetranspose 接口,都是用来做什么的
2026/4/27 8:29:21 网站建设 项目流程

PyTorch 中,Tensor view、permute、transpose、reshape 接口,都是用来做什么的?有什么区别和联系?

一、torch.Tensor.view

作用:把Tensor展平后,重新改变形状,但是不改变维度顺序。

1、总元素个数不变

2、Tensor 是连续内存

3、不会生成新数据,只是改变索引方式

二、torch.Tensor.permute

作用:按照你指定的顺序,重新排列所有维度

1、可以同时调整任意多个维度

2、比 transpose 更通用(transpose 是 permute 的特例)

3、同样会让 Tensor 变成非连续内存

三、torch.Tensor.transpose

作用:只交换 指定的两个维度

1、只能传 2 个维度下标

2、不改变元素总数

3、会让 Tensor 变成非连续内存

四、torch.Tensor.reshape

作用:把张量变成你想要的形状,不改变维度顺序,不改变总元素数量

1、重塑形状

2、维度顺序不变

3、总元素个数必须一样

4、不关心张量是否连续

5、不复制数据,复制数据

五、reshape 和 view 的区别
1. view

必须要求张量内存连续

不连续会直接报错

永远不复制数据

2. reshape

不要求连续

如果不连续,自动调用 .contiguous () 复制数据

永远不会报错(只要元素数量对)

六、reshape 与 transpose /permute 的区别

1、reshape:只改形状,不改维度顺序

2、transpose /permute:改维度顺序,不改形状

七、联系
方法功能维度顺序内存连续性是否复制数据
view塑形不变必须连续不复制
reshape塑形不变自动处理不连续时复制
transpose交换 2 个维度改变变不连续不复制
permute重排所有维度改变变不连续不复制
八、总结

1、view:必须连续,不复制数据,不连续就报错

2、reshape:自动处理连续,不报错,最安全、最常用

3、transpose:交换两个维度

4、permute:重排所有维度

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询