预测时是不是可以从预训练的 vgg 模型中获得第 1 层和第 5 层输出? [复制]
Posted
技术标签:
【中文标题】预测时是不是可以从预训练的 vgg 模型中获得第 1 层和第 5 层输出? [复制]【英文标题】:Is it possible to get 1st and 5th layer output from pretrained vgg model when predicting? [duplicate]预测时是否可以从预训练的 vgg 模型中获得第 1 层和第 5 层输出? [复制] 【发布时间】:2019-11-13 22:11:49 【问题描述】:我需要使用 VGG 预训练模型从图像中提取特征。我还需要从 VGG 预训练模型的第 1 层和第 5 层获取输出。真的可以这样做吗?
如果是,谁能提供工作代码?
编辑: 我将预训练模型下载为
model = VGG16()
然后我用一张图片预测它为:
model.predict(image)
现在我想得到中间层(第 1 卷积层和第 5 卷积层)的输出为:
x=model.layers[5].output
但是当我转换张量时它会产生一个空矩阵。代码中的问题是什么?
注意:我需要一个输出矩阵而不是张量
【问题讨论】:
是的,有可能。 你能提供一个相同的代码吗? 我忘了具体是怎么回事。将诸如 model.output 和 model.input 之类的东西分配给网络的特定部分,然后传播数据。但我敢肯定这个问题是重复的 @BlueRineS 根据我的问题编辑了问题。我关注了keras-how-to-get-the-output-of-each-layer,但这不是我需要的答案。我看到他们没有根据他们的模型进行预测。 其实我需要一个矩阵而不是张量。 【参考方案1】:创建一个采用所需图层的新模型。
newModel = Model(model.inputs,
[model.layers[5].output, model.layers[i].output])
新模型的预测:
layer5, layerI = newModel.predict(imageS)
【讨论】:
以上是关于预测时是不是可以从预训练的 vgg 模型中获得第 1 层和第 5 层输出? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
无需在 Pytorch 中进行微调即可从预训练模型中获取 128 个暗淡的特征向量