Я пытаюсь вычислить оценку F1 в настройке tf.Estimator
.
Я видел этот ТАК вопрос , но не смог отобрать рабочее решение из него.
С tf.Estimator
дело в том, что он ожидает, что я предоставлю значение и обновление, поэтому сейчас у меня есть этот фрагмент кода в конце моей модели:
if mode == tf.estimator.ModeKeys.EVAL:
with tf.variable_scope('eval'):
precision, precision_update_op = tf.metrics.precision(labels=labels,
predictions=predictions['class'],
name='precision')
recall, recall_update_op = tf.metrics.recall(labels=labels,
predictions=predictions['class'],
name='recall')
f1_score, f1_update_op = tf.metrics.mean((2 * precision * recall) / (precision + recall), name='f1_score')
eval_metric_ops = {
"precision": (precision, precision_update_op),
"recall": (recall, recall_update_op),
"f1_score": (f1_score, f1_update_op)}
Теперь точность и отзыв, кажется, работают просто отлично, но на счете F1 я продолжаю получать nan
.
Как мне заставить это работать?
РЕДАКТИРОВАТЬ:
Рабочее решение может быть достигнуто с помощью tf.contrib.metrics.f1_score
, но так как contrib
устареет в TF 2.0, я был бы признателен за решение без contrib