1:view reshape合并维度
【注】:合并维度。若:x=torch.randn(4,4)。x.view(-1,8)其中的-1为自动计算剩余维度的大小即为2。x.view(-1)其中的-1表示拉直张量。
2:unsqueeze()插入维度/squeeze()删除维度
【注】当参数为正数是在前面插入,为负数时在后面插入。当一个tensor为4个维度时,可插入范围为[-5,5):
如果需要在最后一个维度之后插入一个维度可以用unqueeze(4)也可以用unqueeze(-1);
如果需要在最前面插入一个维度可以用unqueeze(0)也可以用unqueeze(-5).
[注]unqueeze(5)会报错。
【注】当不给参数(维度的索引)时,删除所有size为1的维度。
【注】只能删除size为1的维度
3:expand/repeat维度扩展
[注]维度扩展只能扩展size为1的维度,当expand()中某一维度的参数为-1时表明该维度不进行扩展,主要用于某一维度的size需要计算才能得到,故可以用-1表示该维度不进行扩展。
[注]不推荐使用repeat会增加使用的内存
4:t()/transpose()/permute()维度交换
[注]在维度变化之后(转置),会导致数据不连续,故需要用contiguous()将数据连续起来。
view()展开时应该根据合并之前的维度size展开
【注】permute()函数的参数为原来维度的索引,可以一次实现多次维度交换,由于交换之后被打乱故也需要用contiguous()连续起来。
5:打平层(网络层):Flatten()该层是自定义的一个网络层,pytorch中没有提供实现的类
【注】pytorch中未提供这个打平,需要自己定义。以上我已经定义好,大家可以在后面网络构建时使用。