Вам необходимо разместить соответствующую функцию метрик внутри вашего model_fn
.
Например:
tf.summary.image('input_image', input_image, max_outputs)
for v in tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES):
tf.summary.histogram(v.name, v)
Метрики, которые включают update_op
, например, точность f1, должны быть поданы на eval_metric_ops
. Срезы используются потому, что они выводят два значения, значение метрики и операцию обновления
f1 = tf.contrib.metrics.f1_score(labels, predictions, num_thresholds)
accuracy = tf.metrics.accuracy(labels, predictions)
tf.summary.scalar('accuracy', accuracy[1])
eval_metric_ops = {
'f1_score': f1,
'accuracy': accuracy
}
return tf.estimator.EstimatorSpec(mode=mode,
loss=loss,
train_op=train_op,
eval_metric_ops=eval_metric_ops,
)
eval_metric_ops
Диктофон может подаваться как в режиме поезда, так и в режиме оценки.
Если вы используете стандартную оценку, вы можете использовать add_metrics
Edit:
Согласно официальной документации, вы можете использовать binary_classification_head
со стандартным оценщиком или внутри функции model_fn, которая возвращает estimator_spec. Смотри
my_head = tf.contrib.estimator.binary_classification_head()
my_estimator = tf.estimator.DNNEstimator(
head=my_head,
hidden_units=...,
feature_columns=...)
В этом случае вы сможете добавлять метрики даже без функции add_metrics