我已经实现了以下指标来查看我认为相关的类的精确度和召回率。
metrics=[tf.keras.metrics.Recall(class_id=1, name='Bkwd_R'),tf.keras.metrics.Recall(class_id=2, name='Fwd_R'),tf.keras.metrics.Precision(class_id=1, name='Bkwd_P'),tf.keras.metrics.Precision(class_id=2, name='Fwd_P')]
如何在 Tensorflow 2.5 中实现相同的 F1 分数(即专门针对 1 类和 2 类,而不是 0 类,没有自定义函数。
Update
使用此指标设置:
tfa.metrics.F1Score(num_classes = 3, average = None, name = f1_name)
我在训练期间得到以下信息:
13367/13367 [==============================] 465s 34ms/step - loss: 0.1683 - f1_score: 0.5842 - val_loss: 0.0943 - val_f1_score: 0.3314
当我做 model.evaluate 时:
224/224 [==============================] - 11s 34ms/step - loss: 0.0665 - f1_score: 0.3325
和得分 =
Score: [0.06653735041618347, array([0.99740255, 0. , 0. ], dtype=float32)]
问题是这是基于平均值的训练,但我想根据合理平均值/数组中最后两个值/类的 F1 分数进行训练(在本例中为 0)
Edit
将接受一个非张量流特定函数,该函数给出所需的结果(具有完整的函数并在拟合代码期间调用),但真正希望使用现有的张量流代码(如果存在)