我在MNIST数据集上使用Keras进行图像分类,实现代码可在这里找到。我使用了这个实现,并添加了以下方法来从训练好的图像中提取特征:
def feature_extraction(model, x_test, path_to_save): extract = keras.Model(inputs=model.input, outputs=model.get_layer('dense_1').output) features = extract.predict(x_test) np.savetxt(path_to_save, features, delimiter=",")
输出文件中不包含类标签,即文件中的每一行都是一组特征,但没有类标签。有没有办法修改这个方法,以便它也添加每个提取特征的类标签(即每一行)?
回答:
你可以获得多个输出,因此可以同时获取特征和预测的标签概率:
extract = Model(model.input, [model.get_layer('dense_1').output, model.output])features, labels = extract.predict(x_test)labels = np.argmax(labels, axis=1)
现在预测将同时给出这两个输出。你可能需要使用np.argmax
来获取实际的类标签,而不是概率,这取决于模型的具体情况。