tensor数组维度转化
数组
输入神经网络的tensor的维度为 ( B , C , H , W ) (B , C ,H ,W) (B,C,H,W)
- B 代表 b a t c h s i z e B代表batch size B代表batchsize
- C 代表通道数 C代表通道数 C代表通道数
- H 代表图像高 H代表图像高 H代表图像高
- W 代表图像宽 W代表图像宽 W代表图像宽
数组维度变换位置&数组维度合并
import torch
x = torch.randn(32, 3, 416, 416)
B,C,H,W = x.shape # 此时:B=32,C=3,H=416,W=416
#数组维度转化
#第一种
x = torch.tensor(x, dtype=torch.float32).permute(0,2,3,1) #此时x的维度为(B,H,W,C)
#第二种(直接)
x = x.permute(0,2,3,1) #此时x的维度为(B,H,W,C)
#数组维度合并(一种解决方法,不唯一)
x = torch.randn(32, 3, 416, 416)
B,C,H,W = x.shape # 此时:B=32,C=3,H=416,W=416(必须设置)
x = x.view(B,H*W,C) #此时x的维度(B,H*W,C)=(32,416*416,3)