我有一些代码来计算我在函数中编写的Estimator
model_fn中的性能指标,该函数返回指标字典
def __model_eval_metrics(self, classes, labels, mode):
if mode == tf.estimator.ModeKeys.TRAIN or mode == tf.estimator.ModeKeys.EVAL:
return {
'accuracy': tf.metrics.accuracy(labels=tf.argmax(input=labels, axis=1), predictions=classes),
'precision': tf.metrics.precision(labels=tf.argmax(input=labels, axis=1), predictions=classes),
'recall': tf.metrics.recall(labels=tf.argmax(input=labels, axis=1), predictions=classes)
}
else:
return None
在估算工具培训期间,这些会被记录为model_fn
中的名称范围“train_metrics”分组的缩放器
if mode == tf.estimator.ModeKeys.TRAIN:
with tf.name_scope('train_metrics') as scope:
tf.summary.scalar('model_accuracy', eval_metrics['accuracy'][1])
tf.summary.scalar('model_precision', eval_metrics['precision'][1])
tf.summary.scalar('model_recall', eval_metrics['recall'][1])
tf.summary.scalar('model_loss', loss)
对于Estimator
评估,指标作为字典传递给EstimatorSpec
eval_metric_ops参数,作为__model_eval_metrics()
return tf.estimator.EstimatorSpec(
mode=mode,
predictions={"predictions": predictions, "classes": classes},
loss=loss,
train_op=train_op,
eval_metric_ops=eval_metrics,
)
问题是在Tensorboard中,这些指标不再按名称范围分组,我无法确定在何处添加名称范围以实现此目的。您可以看到评估指标未分组。
问题
Estimator
的评估指标?