Как периодически оценивать производительность моделей в TF-Slim?

Я пытаюсь использовать DensNet для проблемы регрессии с TF-Slim. Мои данные содержат 60000 изображений в формате JPEG с 37 плавающими метками для каждого изображения. Я разделил свои данные на три разных файла tfrecords набора поездов (60%), набора проверки (20%) и набора испытаний (20%).

Мне нужно оценить набор проверки во время цикла обучения и сделать график, похожий на изображение. В документации TF-Slim они просто объясняют цикл поезда и цикл оценки отдельно. Я могу просто оценить валидацию или тестовый набор после окончания цикла обучения. Хотя, как я уже сказал, мне нужно оценивать во время тренировок.

Я попытался использовать функцию slim.evaluation.evaluation_loop вместо slim.evaluation.evaluate_once. Но это не помогает.

slim.evaluation.evaluation_loop(
    master=FLAGS.master,
    checkpoint_dir=checkpoint_path,
    logdir=FLAGS.eval_dir,
    num_evals=num_batches,
    eval_op=list(names_to_updates.values()) + print_ops,
    variables_to_restore=variables_to_restore,
    summary_op = tf.summary.merge(summary_ops),
    eval_interval_secs = eval_interval_secs )

Я также пробовал оценку.

from tensorflow.contrib.training.python.training import evaluation

evaluation.evaluate_repeatedly(
    master=FLAGS.master,
    checkpoint_dir=checkpoint_path,
    eval_ops=list(names_to_updates.values()) + print_ops,
    eval_interval_secs = eval_interval_secs )

В обеих этих функциях они просто читают последнюю доступную контрольную точку из checkpoint_dir и, очевидно, ожидают следующую, однако, когда создаются новые контрольные точки, они вообще не работают.

Я использую Python 2.7.13 и Tensorflow 1.3.0 на CPU.

Любая помощь будет высоко оценена.

3 ответа

Использование valu_once прекрасно работает с bash-скриптом, использующим sleep. Похоже, что Tensorboard способен строить несколько одиночных прогонов из заданного eval_dir...

Поэтому я использую что-то вроде:

#!/bin/bash
set -e

# Paths to model and evaluation results
TRAIN_DIR=~/pDL/tensorflow/model/mobilenet_v1_1_224_rp-v1/run0004
TEST_DIR=${TRAIN_DIR}/eval

# Where the dataset is saved to.
DATASET_DIR=/mnt/data/tensorflow/data

# Run evaluation (using slim.evaluation.evaluate_once)
CONTINUE=1

while [ "$CONTINUE" -ne 0 ]
do

python eval_image_classifier.py \
  --checkpoint_path=${TRAIN_DIR} \
  --eval_dir=${TEST_DIR} \
  --dataset_name=master_db \
  --preprocessing_name=preprocess224 \
  --dataset_split_name=valid \
  --dataset_dir=${DATASET_DIR} \
  --model_name=mobilenet_v1 \
  --patch_size=64

echo "sleeping for next run"
sleep 600
done

Похоже, это проблема правильной установки checkpoint_path, как указано здесь: https://github.com/tensorflow/tensorflow/issues/13769

Где ответ по настройке Ellie68:

if tf.gfile.IsDirectory(FLAGS.checkpoint_path):
   if tf.train.latest_checkpoint(FLAGS.checkpoint_path):
       checkpoint_path = tf.train.latest_checkpoint(FLAGS.checkpoint_path)
   else:
       checkpoint_path = FLAGS.checkpoint_path

Нам необходимо оценить разрушение леса на нашем участке исследования возле деревни Токумбо, Боэнде, провинция Чуапа, ДРК. Это GPS-координаты 4 углов участка исследования: 1. Долгота 20 градусов 56'07,3 "; широта 0 градусов 20'24,6"; 2. Долгота 20 градусов 55'57,7 "; широта 0 градусов 20'24,3"; 3. Долгота 2 ° 56'01,8 "; широта 0 ° 20'12,0"; 4. Долгота 20 градусов 56'10,7 "; широта 0 градусов 20'15,9". Нам нужны спутниковые снимки исследования сайта на даты 5 февраля 2020 года и 5 июня 2021 года.

Другие вопросы по тегам