如何重塑ResNet的res5c层(3D转2D)?

How to reshape the res5c layer of ResNet (3D to 2D)?

我使用 'res5c' 层的 ResNet 提取图像的特征,得到形状为 (2048, 14, 14)

的 numpy 数组

我在处理这些维度时遇到了问题。我知道有 14*14 个大小为 2048 的特征。我想遍历以一次访问每个特征。

因此,我如何才能将其重塑为 (14*14, 2048) 的数组而不会出错,然后使用 for 循环轻松地对其进行迭代?

您可以阅读net.forward()之后的特征:

feat = net.blobs['res5c'].data.cop() # copy to be on the safe side.

如您所述,featnp.arrayshape = (2048, 14, 14)
你可以reshape它:

feat.reshape((2048,-1)) # fix the first dimension to 2048, -1 set the number of features to match that of `feat`.

现在您可以迭代功能:

for fi in xrange(feat.shape[1]):
    f = feat[:,fi] # get the fi-th feature
    # do somethinf to the feature f