1

我已经在 imagenet 数据集上预训练了 CNN(RESNET18),现在我想要的是从特定层获取输入图像的输出,

例如。

我的输入图像是,FloatTensor(3, 224, 336)我在我的 resnet 模型中发送了一批size = 10,现在我想要的是 model.layer4 返回的输出,

现在我尝试的是out = model.layer4(Variable(input)),但它给了我输入尺寸不匹配错误(如预期),这是返回的确切错误

RuntimeError:需要输入维度 4 和 input.size[1] == 64,但输入的形状为:[10 x 3 x 224 x 336],位于 /Users/soumith/miniconda2/conda-bld/pytorch_1501999754274/work/火炬/lib/THNN/generic/SpatialConvolutionMM.c:47

所以我很困惑,现在如何继续获得我的 layer4 输出

PS:我的最终任务是将layer4输出和全连接层输出结合在一起(CNN中的Tweeking,一种门控CNN),所以如果有人对这种情况有任何见解,请告诉我,也许我的上述方法不正确

4

1 回答 1

4

您必须创建一个包含从开始到所需块的所有层的模块:

resnet = torchvision.models.resnet18(pretrained=True)
f = torch.nn.Sequential(*list(resnet.children())[:6])
features = f(imgs)
于 2017-10-01T17:35:03.717 回答