Загрузить модель тензорного потока из перемещенного каталога - PullRequest
0 голосов
/ 17 мая 2018
saver = tf.train.import_meta_graph(filepath)
tf.reset_default_graph()
sess = tf.Session()
saver.restore(sess, tf.train.latest_checkpoint('/home/deep_learning_tests/tensorflow/'))

Хорошо, код прост.И загрузка модели тензорного потока с исходным путем работает отлично.

Но проблема в том, что если я переместлю модель тензорного потока (включая .index, .meta, checkpoint) на другой путь, это выдаст ошибку

tenorflow.python.framework.errors_impl.NotFoundError: / home / deep_learning_tests / tenorflow / d: / labtest / tenorflow;Нет такого файла или каталога

Он пытается найти исходный путь к файлу.Если исходный путь к файлу все еще имеет модель (то есть модель копируется только в новый каталог), он работает.Но если исходный каталог файлов удален и остается только новый каталог, выдается указанная выше ошибка.

Как загрузить модель тензорного потока, перемещенную из исходного каталога?

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Просто хочу что-нибудь добавить. Я использовал saver.restore(sess, 'path_to_dir') чтобы восстановить, это не сработало. У меня нет файла .ckpt в path_to_dir, у меня есть 3 файла: имя_модели.index, имя_модели.мета, имя_модели.дата. Таким образом, способ, которым я решил мою проблему, заключается в saver.restore(sess, 'path_to_dir/model_name').

0 голосов
/ 24 мая 2018

Хорошо, мне наконец-то удалось загрузить перемещенную / скопированную модель.

Если вы используете

tf.train.latest_checkpoint

тогда целевой файл загрузки должен находиться в том же каталоге, в котором он был создан.В противном случае вы должны открыть файл «контрольная точка» и изменить путь к каталогу в файле.Это работает, но не рекомендуется.

Я рекомендую НЕ ИСПОЛЬЗОВАТЬ

tf.train.latest_checkpoint

для загрузки модели , когда сохраненная модель перемещается или копируется в другой каталог / систему.

Просто используйте этот

saver.restore (sess, 'путь / к / файлу')

Затем он загрузит модель.

Для ясности, если вы пытаетесь загрузить, как показано ниже

saver = tf.train.import_meta_graph(filepath)
tf.reset_default_graph()
sess = tf.Session()
saver.restore(sess, tf.train.latest_checkpoint('file/path/to/new/directory'))

, вы должны изменить файл 'контрольной точки' на новый путь к каталогу.

В противном случае простосделать

saver = tf.train.import_meta_graph(filepath)
tf.reset_default_graph()
sess = tf.Session()
saver.restore(sess, 'file/path/to/new/directory')

========================================================= Я обнаружил еще одну проблему, которую люди должны знать.Так или иначе, если я тренируюсь в Windows (не проверял Linux или Mac OSX), файл контрольных точек записывает свой путь с абсолютным путем.

Так что, если вы пытаетесь загрузить модель из какой-либо другой системы, он не найдетправильный путь к каталогу для загрузки, так как он ищет абсолютный путь к каталогу, записанный системой каталогов Windows (который начинается с c: / или d: / etc)

Мой пример контрольной точки следующий:

1047 * model_checkpoint_path: "d: / Projects_data / emulator_data / NEW / cnn_21category_char \ tf_ckpt \ _loss_1.357984_accuracy_0.5358-2700" all_model_checkpoint_paths: «d: / Projects_data / emulator_data / NEW / cnn_21category_char \ tf_ckpt \ _loss_1.403583_accuracy_0.5247-1500 «all_model_checkpoint_paths:» d: / Projects_data / emulator_data / NEW / cnn_21category_char \ tf_ckpt \ _loss_1.385835_accuracy_0.5302-1800 "all_model_checkpoint_paths:" /"all_model_checkpoint_paths:" d: / Projects_data / emulator_daта / NEW / cnn_21category_char \ tf_ckpt \ _loss_1.359645_accuracy_0.5363-2400" all_model_checkpoint_paths: "d: / Projects_data / emulator_data / NEW / cnn_21category_char \ tf_ckpt \ _loss_1.357984_accuracy_0.5358-2700"

ЕслиЕсли вы хотите, чтобы он был прочитан, то вы должны изменить его на относительный путь, как показано ниже:

model_checkpoint_path: "_loss_1.357984_accuracy_0.5358-2700" all_model_checkpoint_paths: "_loss_1.403583_accuracy_0pointckathche__point_paths"): _loss_1.385835_accuracy_0.5302-18001056 * Тогда это будет работать.Поэтому я бы рекомендовал проверить файл контрольных точек, если он записан как абсолютный путь.

...