我正在尝试使用DensNet来解决TF-Slim的回归问题。我的数据包含60000个jpeg图像,每个图像有37个浮点标签。我将我的数据分为三个不同的tfrecords文件,一组列车(60%),一套验证(20%)和一套测试(20%)。
我需要在训练循环期间评估验证集并制作类似image的图表。 在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读取最新的可用检查点,并且显然正在等待下一个检查点,但是当生成新的检查点时,它们根本不会执行。
我在CPU上使用Python 2.7.13和Tensorflow 1.3.0。
任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
使用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
答案 1 :(得分: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