2016-04-19 2 views
2

Я играл с сохранением контрольно-пропускных пунктов и возобновил обучение с сохраненных контрольно-пропускных пунктов. Я следовал примеру, приведенному в - https://www.tensorflow.org/versions/r0.8/api_docs/python/train.html#import_meta_graph Чтобы все было просто, я не использовал «настоящую» тренировку сети. Я просто выполнил простой метод вычитания, и каждый контрольный пункт снова и снова сохраняет одну и ту же операцию на тех же тензорах. Минимальный пример представлен в виде следующей IPython ноутбука - https://gist.github.com/dasabir/29b8f84c6e5e817a72ce06584e988f10Сохранение контрольных точек и возобновление обучения в тензорном потоке

В первой фазе, я бегу цикл 100 раз (установив значение переменной «endIter = 100» в коде) и сохранение контрольных точек каждые 10-ю итерацию. Таким образом, сохраняемые контрольные точки пронумерованы как - 9, 19, ..., 99. Теперь, когда я изменяю значение «enditer», чтобы сказать 200 и возобновляя обучение, контрольные точки снова начинают сохраняться с 9, 19 , ... (не 109, 119, 129, ...). Есть ли трюк, который мне не хватает?

ответ

2

Вы можете распечатать 'latest_ckpt' и посмотреть, указывает ли он на последний файл ckpt? Кроме того, необходимо поддерживать global_step с помощью tf.variable:

global_step = tf.Variable(0, name='global_step', trainable=False) 
... 
ckpt = tf.train.get_checkpoint_state(ckpt_dir) 
if ckpt and ckpt.model_checkpoint_path: 
    print ckpt.model_checkpoint_path 
    saver.restore(sess, ckpt.model_checkpoint_path) # restore all variables 
start = global_step.eval() # get last global_step 
print "Start from:", start 

for i in range(start, 100): 
... 
    global_step.assign(i).eval() # set and update(eval) global_step with index, i 
    saver.save(sess, ckpt_dir + "/model.ckpt", global_step=global_step) 

Вы можете посмотреть на полный пример:

https://github.com/nlintz/TensorFlow-Tutorials/pull/32/files

+0

спасибо за ответ. Я проверил печать «last_ckpt», что указывает на последний файл ckpt. Принимая указатель на использование переменной global_step и ссылку на учебник, я также изменил подход. Вместо использования переменной я читаю последний сохраненный номер итерации из сохраненного имени файла контрольной точки. Я использовал учебник DeepMNIST, чтобы создать полный пример сохранения и возобновления обучения. Его можно найти в следующей ссылке gist. Пожалуйста, смотрите. https://gist.github.com/dasabir/a7aa01129e6b16bda6ce7755a9eaf0b0 –

Смежные вопросы