目录
Pytorch--Tensor的维度变换
1、View/reshape
view
在变换过程中size相乘必须一样才可以变换
view操作会丢失dim信息
2、Squeeze/unsqueeze
unsqueeze
[-a.dim()-1, a.dim()+1)
在这个范围内添加维度
0~a.dim()+1,是往下标的左边添加维度
例子:
squeeze
默认将所有维度信息为1的维度去除
传参传入,若相应下标为1则去除对应维度,不为1则保持不变
3、Expand / repeat
Expand: broadcasting
Repeat: memory copied
一般用expand速度快(直接传入相应要变化的维度就好了)传入-1意思不改变维度
repeat传入的是要变化的倍数
4、其他方法
4.1、.t()
进行转置,只能是2维
4.2、Transpose()
传入两个index,对指定index的维度进行交换
4.3、permute()
重置维度的顺序
b.permute(0,1,2,3)即保持不变
b.permute(0,2,3,1)即123发生交换位置