eval_metric_ops显示在tensorboard上的family下

问题描述 投票:0回答:2

使用tensorflow 1.3中的标量摘要,我现在可以定义一个“族”,它将有助于在相同的张量板选项卡下对相关指标进行分组。例如,如果我在下面定义了两个汇总标量:

precision = precision(labels, predictions)
recall = recall(labels, predictions)

然后我可以通过执行以下操作在tensorboard中的单个选项卡下显示这些:

tf.summary.scalar('precision', precision, family = 'precision/recall')
tf.summary.scalar('recall', recall, family = 'precision/recall')

我想使用eval_metric_ops重复此行为用于评估摘要,但我无法找到任何方法来执行此操作。例如,我想要一个在同一个标​​量选项卡下有tf.metrics.precision和tf.metrics.recall的选项卡。有没有办法控制用于eval_metric_ops的选项卡名称?

我在ML引擎实验函数中运行它,因此可以传递给tf.estimator.EstimatorSpec的一般解决方案。

python tensorflow google-cloud-platform tensorboard google-cloud-ml-engine
2个回答
1
投票

使用预测估算器,我认为没有任何方法可以控制内置指标的系列。但你可以添加一个钩子,使用eval_hook将额外的度量作为tf.contrib.learn.Experiment参数添加到tf.train.SummarySaverHook,你将能够控制这些新定义的钩子的族。

使用自定义估算器,您将执行相同操作,除非您在返回的evaluation_hooks中将钩子添加到EstimatorSpec,以便您可以正常指定度量标准系列。


1
投票

如果您正在编写自定义估算器,则可以使用斜杠分隔的前缀来度量键,以控制它们在Tensorboard中显示的族。

具体来说,如果您使用密钥my_family/accuracy发出度量标准,如下所示:

def model_fn(features, labels, mode):

  if mode == tf.estimator.ModeKeys.EVAL:

    accuracy = ...
    loss = ...

    return tf.estimator.EstimatorSpec(
        tf.estimator.ModeKeys.EVAL,
        loss=loss,
        eval_metric_ops={'my_family/accuracy': tf.metrics.mean(accuracy)},
    )

  else:
    ...

accuracy指标将作为张量板中my_family家族的一部分出现。

© www.soinside.com 2019 - 2024. All rights reserved.