PyTorch 中,Tensor viewpermutetranspose 接口,都是用来做什么的
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重排所有维度