预测时是不是可以从预训练的 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 个暗淡的特征向量

如何从预训练的 GPT2 模型中获取 onnx 格式?

Gensim Word2Vec 从预训练模型中选择少量词向量

gensim doc2vec 从预训练模型中训练更多文档

从预训练模型中移除顶层,迁移学习,张量流(load_model)