Я начал изучать библиотеку TensorFlow и тестировал классификацию изображений example, в которой используются данные MNIST. Я хочу, чтобы модель была сохранена в файле после завершения фазы обучения, чтобы я мог использовать ее по мере необходимости. Я проверил this link, который рассказывает о том, как сохранить значения из TensorFlow в любой файл и прочитать это. До сих пор я могу сохранить некоторые переменные из сценария в файл, используя pickle, как это предлагается в ссылке. Но я не могу понять, что нужно сохранить в файле, чтобы сохранить текущее состояние модели для ее последующего использования. Пожалуйста, кто-нибудь может объяснить эту часть примера с сохранением модели и загрузкой этой модели.Что нужно сохранить для повторного использования модели в TensorFlow
ответ
Для сохранения и восстановления переменных в Tensorflow необходимы следующие вещи.
1) Список переменных, которые будут сохранены и восстановлены 2) tf.train.Saver
Как правило, 1) достигается за счет
# To save and restore whole tf variables
all_vars = tf.global_variables()
или,
# To save and restore the specific tf variables using scope
all_vars = tf.global_variables()
model_vars = [k for k in all_vars if k.name.startswith("xxx")]
# "xxx" is the expected scope
Затем 2) достигается
saver = tf.train.Saver(vars_list)
# vars_list is list of variables from above
Наконец, чтобы сохранить переменные (с tf.Session() работает с именем 'Sess')
saver.save(sess, '/directory/to/chechpoint/file.ckpt')
и восстановить их,
saver.restore(sess, '/directory/to/chechpoint/file.ckpt')
Во-первых, вы должны это проверить other question.
У TensorFlow есть методы, предназначенные для управления сохранением и восстановлением контрольных точек , в частности, класса tf.train.saver
. Ознакомьтесь с официальной документацией here. Контрольные точки в основном хранят значения ваших тензоров (среди прочего) на диске.
Цитируя документации:
Checkpoints бинарные файлы в собственном формате, отображающие имена переменных значений тензора. Лучший способ проверить содержимое контрольной точки - загрузить ее с помощью
Saver
.
Только Variables могут быть сохранены и восстановлены. Когда вам нужно повторно использовать сохраненные переменные, вам нужно сначала построить график, создав нейронную сеть и установив параметры NN, такие как номера слоев, скорость обучения и выпадение и т. Д. Единственными значениями, восстановленными с контрольной точки, являются переменные, определенные в тренинге обработать. Вы можете взглянуть на любой пример, например this one.
Подводя итог, можно сохранять и восстанавливать только переменные, настройки нейронной сети и placeholders не могут.