![](/img/trans.png)
[英]ValueError: The passed save_path is not a valid checkpoint: modeltest.ckpt
[英]Tensorflow: ValueError: Can't load save_path when it is None in single shot detection
我刚刚开始在 python 中使用 tensorflow。我正在尝试使用 tensorflow 为 pascalvoc 数据集训练单发检测。 在创建 tfrecords 和评估期间使用 VGG_VOC0712_SSD_300x300_ft_iter_120000.ckpt 训练 model 没有错误。 然而,当我尝试使用 ssd_300_vgg.ckpt 预训练 model 训练 pascalvoc 2007 或 2012 数据集时,出现以下错误。
2017-08-25 20:03:03.001268: I tensorflow/core/common_runtime gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Quadro M5000M, pci bus id: 0000:01:00.0)
INFO:tensorflow:Error reported to Coordinator: <type 'exceptions.ValueError'>, Can't load save_path when it is None.
Traceback (most recent call last):
File "train_ssd_network.py", line 391, in <module>
tf.app.run()
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 48, in run
_sys.exit(main(_sys.argv[:1] + flags_passthrough))
File "train_ssd_network.py", line 387, in main
sync_optimizer=None)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/slim/python/slim/learning.py", line 738, in train
master, start_standard_services=False, config=session_config) as sess:
File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
return self.gen.next()
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/supervisor.py", line 965, in managed_session
self.stop(close_summary_writer=close_summary_writer)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/supervisor.py", line 793, in stop
stop_grace_period_secs=self._stop_grace_secs)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/coordinator.py", line 389, in join
six.reraise(*self._exc_info_to_raise)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/supervisor.py", line 954, in managed_session
start_standard_services=start_standard_services)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/supervisor.py", line 709, in prepare_or_wait_for_session
init_feed_dict=self._init_feed_dict, init_fn=self._init_fn)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/session_manager.py", line 281, in prepare_session
init_fn(sess)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/framework/python/ops/variables.py", line 660, in callback
saver.restore(session, model_path)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/saver.py", line 1558, in restore
raise ValueError("Can't load save_path when it is None.")
ValueError: Can't load save_path when it is None.
我正在使用以下脚本微调 model
DATASET_DIR=./tfrecords
TRAIN_DIR=./logs/
CHECKPOINT_PATH=./checkpoints/ssd_300_vgg.ckpt
python train_ssd_network.py \
--train_dir=${TRAIN_DIR} \
--dataset_dir=${DATASET_DIR} \
--dataset_name=pascalvoc_2012 \
--dataset_split_name=train \
--model_name=ssd_300_vgg \
--checkpoint_path=${CHECKPOINT_PATH} \
--save_summaries_secs=60 \
--save_interval_secs=600 \
--weight_decay=0.0005 \
--optimizer=adam \
--learning_rate=0.001 \
--batch_size=10
model ssd_300_vgg.ckpt 存储在位置./checkpoints
如果有人有解决方案,请告诉我。
三点建议:
恢复模型时检查路径
saver = tf.train.import_meta_graph(model_path)
还原检查点时检查路径
saver.restore(sess, tf.train.latest_checkpoint(cur_dir))
保存模型时检查参数
saver = tf.train.Saver(save_relative_paths=True)
CHECKPOINT_PATH=./checkpoints/ssd_300_vgg.ckpt/ssd_300_vgg.ckpt
即使我证明了正确的路径,我也遇到了同样的问题。
我正在通过这样的正确路径:
sess = tf.Session()
saver = tf.train.import_meta_graph('model_dir/model.meta')
restore = saver.restore(sess,tf.train.latest_checkpoint('model_dir/'))
但是我遇到了错误,所以我将检查点文件作为 .txt 打开,检查点文件中的路径是错误的,这就是它无法加载文件的原因。
因此,如果您遇到相同的错误,请通过打开检查点文件路径来检查它。
检查您的路径,您可能指向一个不存在的文件。
在检查这些答案时,有人可能想要什么:
saver.restore(sess, tf.train.latest_checkpoint("directorytosavedmodel/./"))
换句话说, ./
在保存模型的目录中工作......(我正在通过这个线程思考,我只想恢复一个模型而不是在我恢复之前保存一个模型......)
这意味着 model 文件不存在并且saver.restore
无法读取 model 文件。
有时(在我的例子中),你克隆了一个 repo,但你忘记下载预训练的pretrained model
并在saver.restore
指向的路径中找到它们。
(如果你自己将它们保存在你的代码中,请参阅@Maikefer 答案)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.