如何解决从神经网络的特定层中提取激活
我正在研究图像识别问题。训练模型后,我保存了架构和权重。现在我想使用该模型从其他图像中提取特征并对其执行 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 以 (32,3) 为输入,输出为特征向量
,如果您的模型是子类 - 只需更改 call()
方法。
如果不是:
- 如果您的模型很复杂 - 通过子类模型包装您的模型并更改
call()
方法中的前向传递,或 - 如果您的模型很简单 - 创建没有最后一层的模型,分别向每一层加载权重
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。