我在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] at / Users / soumith / miniconda2 / conda- BLD / pytorch_1501999754274 /工作/炬/ LIB / THNN /通用/ SpatialConvolutionMM.c:47
所以我很困惑,现在如何继续获取我的layer4输出
PS:我的最终任务是将layer4输出和完全连接的图层输出结合在一起(在CNN中进行Tweeking,有点CNN),所以如果有人对这种情况有任何见解那么请告诉我,也许我的上述方法不是对了答案 0 :(得分:1)
您必须创建一个模块,其中包含从开始到所需块的所有图层:
resnet = torchvision.models.resnet18(pretrained=True)
f = torch.nn.Sequential(*list(resnet.children())[:6])
features = f(imgs)