gpt4 book ai didi

python - 在 Keras 中获得每个类(class)的精确度、召回率和 F1 分数

转载 作者:太空狗 更新时间:2023-10-30 00:04:51 24 4
gpt4 key购买 nike

我在 Keras (2.1.5) 中使用 TensorFlow 后端训练了一个神经网络,我还使用了 keras-contrib (2.0.8) 库来添加 CRF 层作为网络的输出。

我想知道在使用神经网络对测试集进行预测后,如何获得每个类的精度、召回率和 f1 分数。

最佳答案

假设您有一个函数 get_model() 可以构建您训练过的完全相同的模型,并且有一个路径 weights_path 指向包含模型权重的 HDF5 文件:

model = get_model()
model.load_weights(weights_path)

这应该可以正确加载您的模型。然后您只需定义测试数据的 ImageDataGenerator 并拟合模型以获得预测:

# Path to your folder testing data
testing_folder = ""
# Image size (set up the image size used for training)
img_size = 256
# Batch size (you should tune it based on your memory)
batch_size = 16

val_datagen = ImageDataGenerator(
rescale=1. / 255)
validation_generator = val_datagen.flow_from_directory(
testing_folder,
target_size=(img_size, img_size),
batch_size=batch_size,
shuffle=False,
class_mode='categorical')

然后您可以使用 model.predict_generator() 方法让模型生成整个数据集的所有预测:

# Number of steps corresponding to an epoch
steps = 100
predictions = model.predict_generator(validation_generator, steps=steps)

最后使用 sklearn 包中的 metrics.confusion_matrix() 方法创建一个混淆矩阵:

val_preds = np.argmax(predictions, axis=-1)
val_trues = validation_generator.classes
cm = metrics.confusion_matrix(val_trues, val_preds)

或者使用 sklearn 中的 metrics.precision_recall_fscore_support() 方法获取所有类的所有精度、召回率和 f1 分数(参数 average=None 输出所有类别的指标):

# label names
labels = validation_generator.class_indices.keys()
precisions, recall, f1_score, _ = metrics.precision_recall_fscore_support(val_trues, val_preds, labels=labels)

我还没有测试过,但我想这会对你有所帮助。

关于python - 在 Keras 中获得每个类(class)的精确度、召回率和 F1 分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50065484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com