维度转换
维度变换
数据没有被改变,改变的只有数据的理解方式
1. view / reshape
1.view reshape ,两个方法的用法完全相同
要求转换前后tensor的numel()相同即可,prod(a.size()) ==prod(b.size())
1 |
|
2.squeeze v.s. unsqueeze-维度
2.1 unsqueeze()
1 | #unsqueeze( input , dim ) ->Tensor |
图示
可以看出来维度变换之后,数据的理解方式不同,要好好体会
数据处理的实例应用
1 | b = torch.rand(32) |
2.2 squeeze
1 | #torch.squeeze(input , dim =None ,Out = None) ->tensor |
3.Expand /repeat-行
3.1 expand
参数是广播的目标tensor的shape
1 |
|
3.2 repeat--不建议使用
进行repeat之后,可能会开辟新的空间去保存repeat的结果,会降低效率
参数传递是每个维度上要重复的次数,需要自己计算
4.转置操作 .t(只能适用于2D操作)
5.Transpose()
1 | #转换效果图 |
6.permute
permute也会打乱内存的顺序,需要调用coutigious函数
permute底层是调用多次transpose()实现的
1 | #上面遮挡住的命令是 |