Pytorch——维度变化

  1. view和reshape,一样的

squeeze和unsqueeze

  1. unsqueeze(dim): dim范围[-a.dim()-1,a.dim()+1]
    dim=4,则范围是[-5,5)
    dim为负数则在索引后插入,为正数则在索引前插入
  2. squeeze()不给参数时,默认将所有size=1的纬度删除,给的dim的size不等于1时不会变

expand与repeat

  1. 区别
    expand需要的时候才扩展,repeat实实在在的复制数据
  2. expand使用
    1->N可以
    3->M不可以扩展
    如[1,32,1,1]->[4,32,14,14]可以
    [2,32,1,1]->[4,32,14,14]报错
    参数为-1时表示这个纬度不变
    参数的意义是希望得到的纬度
  3. repeat的使用
    参数的意义是该纬度需要拷贝的次数
    不建议使用

转置操作

  1. .t()只适用于2D的
  2. transpose(dim1,dim2)
    交换dim1和dim2,此时存储顺序已经变了
    cantiguous()使数据变得连续
  3. [b,h,w,c]是numpy的图片存储格式
  4. permute()使用
    参数是希望得到的纬度顺序

broadcasting

[ 高->低]
低维的纬度相同的,再往高维匹配
[4 32 8]+一维的或标量可以,+[4]就不可以