【发布时间】:2023-03-28 10:34:02
【问题描述】:
有没有办法使用tf.keras.metrics.Precision 获得二元分类模型中 0 类的精度?
我尝试将 class_id 设置为 0,但它仍然提供 1 类的精度。
我想使用回调来保存具有最佳 0 类精度值的模型,这就是我需要一个编译精度指标的原因。
我使用tf.keras.preprocessing.image_dataset_from_directory 创建我的数据集,训练/验证/测试集的代码看起来相同(当然训练和验证集是混洗的):
ds_test = tf.keras.preprocessing.image_dataset_from_directory(
directory = test_path,
batch_size = my_batch_size,
image_size = (img_height, img_width),
shuffle = False
)
在compile方法中添加精度度量:
model.compile(loss = tf.keras.losses.BinaryCrossentropy(),
optimizer = tf.keras.optimizers.Adam(...),
metrics = ["accuracy",
tf.keras.metrics.Precision(class_id = 0, name = "precision_0")
]
)
使用 tensorflow model.evaluate 评估模型时,我得到的是 1 类而不是 0 类的精度:
precision_0: 0.9556
使用 sklearn.metrics.classification_report 我得到了两个类的精度:
precision
0 0.9723
1 0.9556
我也想获得 tensorflow 中 0 类的精度,在本例中为 0.9723。有任何想法吗? 提前致谢!
【问题讨论】:
标签: python tensorflow keras classification