2017-10-17 4 views
1

TF-Slimの回帰問題にDensNetを使用しようとしています。私のデータには、各画像の37枚のフロートラベルを含む60000枚のJPEG画像が含まれています。列車セット(60%)、検証セット(20%)、テストセット(20%)の3つの異なるtfrecordsファイルにデータを分割しました。TF-Slimのモデルのパフォーマンスを定期的に評価する方法は?

トレーニングループ中に検証セットを評価し、imageのようなプロットを作成する必要があります。 TF-Slimのドキュメントでは、列車と評価のループを別々に説明しています。トレーニング終了後に検証やテストセットを評価することができます。私が言ったように、私は訓練中に評価する必要があります。

slim.evaluation.evaluate_onceの代わりにslim.evaluation.evaluation_loop関数を使用しようとしました。しかし、それは助けにはならない。

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) 

私はevaluation.evaluate_repeatedlyも試みました。これらの機能の両方で

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から入手可能な最新のチェックポイントを読んで、明らかに次のものを待っています。

私はCPU上でPython 2.7.13とTensorflow 1.3.0を使用します。

ご協力いただければ幸いです。

答えて

0

evaluate_onceを使用すると、sleepを使用するbashスクリプトでうまく動作します。 ... 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 
0

これは、ここで取り上げとして適切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 
+0

ありがとうございました。それはうまくいく。 – Hosein

関連する問題