从特定的神经网络层提取激活



我正在研究一个图像识别问题。训练完模型后,我保存了架构和权重。现在我想用这个模型从其他图像中提取特征,并对其执行SVM。为此,我想删除模型的最后两层,得到CNN和完全连接层计算的值。我如何在Keras中做到这一点?

# a simple model
model = keras.models.Sequential([
keras.layers.Input((32,32,3)),
keras.layers.Conv2D(16, 3, activation='relu'),
keras.layers.Flatten(),
keras.layers.Dense(10, activation='softmax')
])
# after training
feature_only_model = keras.models.Model(model.inputs, model.layers[-2].output)

feature_only_model取a(32,32,3)作为输入,输出是特征向量

如果您的模型是子类化的-只需更改call()方法。

如果没有:

  1. 如果你的模型是复杂的,用子类模型包装你的模型,并在call()方法中改变前向传递,或者
  2. 如果你的模型是简单的-创建没有最后一层的模型,分别加载权重到每一层

相关内容

  • 没有找到相关文章

最新更新