【问题标题】:How to extract features from a layer of the pretrained ResNet model Keras如何从预训练的 ResNet 模型 Keras 的一层中提取特征
【发布时间】:2019-10-05 23:04:51
【问题描述】:

我用 Resnet3D 训练了一个模型,我想提取一个层的神经元。我计划将它们与 SVM 分类器一起使用。如何提取这些权重并将它们放入 numpy 数组?

通过keras加载权重

model = Resnet3DBuilder.build_resnet_18((128, 96, 96, 3), nClass[0])
model.load_weights('drive/app/models/3d_resnet_modelq.hdf5')

提取图层

dns = model.layers[-1].output

现在我该怎么办?

【问题讨论】:

  • 你能告诉我们你已经尝试过什么吗?
  • @ZaccharieRamzi 我刚刚尝试了我上面在代码中写的内容并搜索了我的问题,但我找不到任何答案
  • 但是在直接进入(或至少阅读一些文档)之前,您是否首先考虑过做 keras 教程?如果您甚至无法开始编写一些代码(或查看文档)来回答您的问题,您可能需要从更简单的事情开始。
  • 还不清楚您是想要最后一层的权重还是要将模型用作特征提取器。你能澄清一下吗?
  • 就像我说的,我认为您对图层的权重和图层的输出感到困惑。权重是网络的参数,而层的输出正是您要提取的特征。

标签: keras deep-learning conv-neural-network feature-extraction resnet


【解决方案1】:

如果你只是想可视化这些特征,在纯 Keras 中你可以定义一个Model 并将所需层作为输出:

from keras.models import Model

model_cut = Model(inputs=model.inputs, output=model.layers[-1].output)
features = model_cut.predict(x)  # Assuming you have your images in x

请注意,为了使其工作,model 必须至少编译一次。

【讨论】:

  • 谢谢,但我想要最后一层的权重用于 svm calssifier
  • 我真的建议您在进一步研究之前阅读神经网络。您正在寻找的显然是最后一层产生的特征,而不是它的权重。
  • 如果它解决了您的问题,您能否接受答案,以免其他用户显示为未回答?
  • @DanieleGrattarola 如何修改它以获得特征和预测,而无需重新计算所有直到 -1 层
猜你喜欢
  • 2020-02-16
  • 1970-01-01
  • 1970-01-01
  • 2019-11-28
  • 2023-03-11
  • 1970-01-01
  • 2016-12-21
  • 2016-05-11
  • 2019-08-03
相关资源
最近更新 更多