2

我正在使用slim.evaluation.evaluation_loop一个单独的过程来评估我训练的模型。为了获得我使用的指标更新操作streaming metrics。我的代码看起来像,

## Compute the metrics
names_to_values, names_to_updates = slim.metrics.aggregate_metric_map({
                                    'accuracy' : slim.metrics.streaming_accuracy(tf.to_int32(tf.argmax(test_predictions, 1)),test_labels),
                                    })


## Aggregate the metrics
summary_ops = []
for metric_name, metric_value in names_to_values.iteritems():
        op = tf.summary.scalar(metric_name, metric_value)
        op = tf.Print(op, [metric_value], metric_name)
        summary_ops.append(op)    



## Evaluation parameter setup
slim.get_or_create_global_step()

test_summary_dir = {test summaries directory}
eval_interval_secs = {test interval in seconds} # How often to run the evaluation.
num_examples = {test set size} 
batch_size   = {test batch size}
num_batches  = math.ceil(num_examples / float(batch_size))


slim.evaluation.evaluation_loop(
        master="",
        checkpoint_dir={checkpoint directory name},
        logdir=test_summary_dir,
        num_evals=num_batches,
        eval_op=names_to_updates.values(),
        summary_op=tf.summary.merge(summary_ops),
        eval_interval_secs=eval_interval_secs,
        )

我的问题是,在使用 时streaming metrics,Tensorflow 会不断累积指标。这意味着更早的检查点准确性也被考虑在内。如果我们需要评估一个特定的检查点,这是不对的。

在这个解释的设置中,有没有办法在每个时代之后重置评估精度?

streaming_metrics或者,除了解决这个问题,还有其他度量计算方法吗?

先感谢您!

4

0 回答 0