如何在 tensorflow 中计算宏观加权精度召回值?

How to calculate macro, weighted Precision Recall values in tensorflow?

提问人:javeqx 提问时间:10/5/2023 更新时间:10/5/2023 访问量:18

问:

我正在尝试在训练 ResNet/ResNeXt 模型时获得宏和加权精度、召回值。 如何编译模型:

f1 =tfa.metrics.F1Score(num_classes=2, average='weighted')
model.compile (
    loss = 'categorical_crossentropy',
    optimizer="adam" ,metrics=[ f1, "Precision", "Recall"]
)

当我在这样编译后拟合模型时,我的精确度和召回率分数在每一步中总是相同的。 在网上,我看到这可能是因为我正在计算微分数。但是,在 tf.metrics 的文档中,没有用于召回率或精度的“average”参数。我能做什么,或者为什么我得到相同的值?

我尝试使用火炬计量库中的精度和召回功能。

f1 =tfa.metrics.F1Score(num_classes=2, average='weighted')
binaryloss = tf.keras.losses.BinaryCrossentropy()
prec = torchmetrics.Precision(num_classes=2, threshold=0.5, average='weighted', task='binary')
recall = torchmetrics.Recall(task="binary", average='weighted', num_classes=2)
model.compile (
    loss = 'categorical_crossentropy',
    optimizer="adam" ,metrics=[ f1, prec, recall]
)

但是当我这样编译模型时,我在拟合零件后出现错误。 错误如下: ** RuntimeError:预测和目标应具有相同的形状,但得到 (None, None) 和 (None, 2)。

TensorFlow Precision Torch 精确召回 Torchmetrics

评论


答: 暂无答案