我正在使用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
或者,除了解决这个问题,还有其他度量计算方法吗?
先感谢您!