如何将斑点从 ( N , C , H , W ) 重塑为 ( N , H , W ,C )?

问题描述 投票:0回答:2

我有一个尺寸为(N,C,H,W)的斑点,我想将其重塑为(N,H,W,C)。直接重塑并没有多大帮助。有人可以帮忙吗??

python arrays numpy blob reshape
2个回答
1
投票

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)

0
投票

要使用

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
© www.soinside.com 2019 - 2024. All rights reserved.