【发布时间】:2021-04-27 15:48:30
【问题描述】:
我正在研究图像识别问题。训练模型后,我保存了架构和权重。现在我想使用该模型从其他图像中提取特征并对其执行 SVM。为此,我想删除模型的最后两层,并获得由 CNN 和全连接层计算的值。我如何在 Keras 中做到这一点?
【问题讨论】:
标签: tensorflow keras deep-learning conv-neural-network feature-extraction
我正在研究图像识别问题。训练模型后,我保存了架构和权重。现在我想使用该模型从其他图像中提取特征并对其执行 SVM。为此,我想删除模型的最后两层,并获得由 CNN 和全连接层计算的值。我如何在 Keras 中做到这一点?
【问题讨论】:
标签: tensorflow keras deep-learning conv-neural-network feature-extraction
如果您的模型是子类 - 只需更改 call() 方法。
如果没有:
call() 方法中更改前向传递,或者【讨论】:
# 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,32,3) 为输入,输出为特征向量
【讨论】: