Тонкий цикл оценки Tensorflow, Как вычислить точность контрольной точки? Замена потоковых метрик?
Я использую 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
обойти это?
Заранее спасибо!