我有一个尺寸为(N,C,H,W)的斑点,我想将其重塑为(N,H,W,C)。直接重塑并没有多大帮助。有人可以帮忙吗??
transpose
它:
In [344]: X = np.ones((2,3,4,5),int)
In [345]: X.transpose(0,2,3,1).shape
Out[345]: (2, 4, 5, 3)
要使用
numpy
将斑点从 (N, C, H, W) 重塑为 (N, H, W, C),您不能直接使用 reshape,因为它仅根据内存布局进行重塑,而不是对轴重新排序。
如果您正在处理
numpy
,请使用 transpose
功能:
blob = np.random.randn(2, 3, 4, 5) // {N,C,H,W} format
reshaped_blob = np.transpose(blob, (0, 2, 3, 1)) // {N,H,W,C} format
如果您正在处理
torch
,您可以使用permute
功能:
tensor = torch.randn(2, 3, 4, 5) // {N,C,H,W} format
reshaped_tensor = tensor.permute(0, 2, 3, 1) // {N,H,W,C} format