tf.train.Saver
Сохраняет и восстанавливает переменные.
tf.train.Saver(
var_list=None, reshape=False, sharded=False, max_to_keep=5,
keep_checkpoint_every_n_hours=10000.0, name=None, restore_sequentially=False,
saver_def=None, builder=None, defer_build=False, allow_empty=False,
write_version=tf.train.SaverDef.V2, pad_step_number=False,
save_relative_paths=False, filename=None
)
См. Переменные для обзора переменных, сохранения и восстановления.
Класс Saver добавляет операции для сохранения и восстановления переменных в и из чекпоинтов. Он также предоставляет удобные методы для выполнения этих операций.
Чекпоинты — это двоичные файлы в собственном формате, которые отображают имена переменных на значения тензоров. Лучший способ изучить содержимое чекпоинта — загрузить его с помощью Saver.
Сохранители могут автоматически добавлять порядковый номер в имена файлов чекпоинтов, используя предоставленный счётчик. Это позволяет сохранять несколько чекпоинтов на разных этапах обучения модели. Например, можно добавлять порядковый номер шага обучения в имена файлов чекпоинтов. Для предотвращения заполнения дисков сохранители автоматически управляют файлами чекпоинтов. Например, они могут сохранять только N последних файлов или один чекпоинт за каждые N часов обучения.
Вы добавляете порядковый номер в имена файлов чекпоинтов, передавая значение в необязательный аргумент global_step к save():
saver.save(sess, 'my-model', global_step=0) ==> filename: 'my-model-0' ... saver.save(sess, 'my-model', global_step=1000) ==> filename: 'my-model-1000'
Кроме того, необязательные аргументы конструктора Saver() позволяют контролировать распространение файлов чекпоинтов на диске:
max_to_keepуказывает максимальное количество последних файлов чекпоинтов для сохранения. Когда создаются новые файлы, старые удаляются. Если None или 0, чекпоинты с файловой системы не удаляются, а в файлеcheckpointсохраняется только последний. По умолчанию значение равно 5 (то есть сохраняются 5 последних файлов чекпоинтов.)keep_checkpoint_every_n_hours: В дополнение к сохранению последнихmax_to_keepфайлов чекпоинтов, вы можете сохранять по одному файлу чекпоинта за каждые N часов обучения. Это может быть полезно, если вы хотите в дальнейшем проанализировать, как модель развивалась в течение длительной сессии обучения. Например, передачаkeep_checkpoint_every_n_hours=2гарантирует, что один файл чекпоинта сохраняется за каждые 2 часа обучения. Значение по умолчанию 10 000 часов фактически отключает эту функцию.
Обратите внимание, что вам по-прежнему необходимо вызвать метод save() для сохранения модели. Передача этих аргументов в конструктор не позволит автоматически сохранять переменные.
Программа обучения, которая регулярно сохраняет состояние, выглядит следующим образом:
...
# Create a saver.
saver = tf.compat.v1.train.Saver(...variables...)
# Launch the graph and train, saving the model every 1,000 steps.
sess = tf.compat.v1.Session()
for step in xrange(1000000):
sess.run(..training_op..)
if step % 1000 == 0:
# Append the step number to the checkpoint name:
saver.save(sess, 'my-model', global_step=step)
В дополнение к файлам чекпоинтов, сохранители сохраняют протокол буфера на диске со списком последних чекпоинтов. Он используется для управления именованными файлами чекпоинтов и latest_checkpoint(), что упрощает обнаружение пути к последнему чекпоинту. Этот протокол буфера хранится в файле с именем «checkpoint» рядом с файлами чекпоинтов.
Если вы создаёте несколько сохранителей, вы можете указать имя файла протокол буфера в вызове save().
| Аргументы | |
|---|---|
var_list | Список Variable/SaveableObject, или словарь, сопоставляющий имена с SaveableObject. Если None, по умолчанию используется список всех сохраняемых объектов. |
reshape | Если True, позволяет восстановить параметры из чекпоинта, где переменные имеют другой размер. |
sharded | Если True, фрагментировать чекпоинты, по одному на устройство. |
max_to_keep | Максимальное количество последних сохранённых чекпоинтов. По умолчанию 5. |
keep_checkpoint_every_n_hours | Периодичность сохранения чекпоинтов. По умолчанию 10 000 часов. |
name | Строка. Необязательное имя для использования в качестве префикса при добавлении операций. |
restore_sequentially | Логическое значение. Если True, восстановление различных переменных происходит последовательно на каждом устройстве. Это может снизить использование памяти при восстановлении очень больших моделей. |
saver_def | Необязательный протокол SaverDef, используемый вместо запуска билдера. Это полезно только для специального кода, который хочет воссоздать объект Saver для ранее построенного объекта Graph с Saver. Протокол saver_def должен быть тем, который возвращён вызовом as_saver_def() объекта Saver, созданного для данного Graph. |
builder | Необязательный SaverBuilder для использования, если saver_def не был предоставлен. По умолчанию BulkSaverBuilder(). |
defer_build | Если True, отложить добавление операций сохранения и восстановления до вызова build(). В этом случае build() должен быть вызван перед окончательным построением графа или использованием сохранителя. |
allow_empty | Если False (значение по умолчанию), генерируется ошибка, если в графе нет переменных. В противном случае сохранитель всё равно создаётся и выполняет пустую операцию. |
write_version | управляет форматом при сохранении чекпоинтов. Он также влияет на определённую логику сопоставления файлов путей. Формат V2 является рекомендуемым выбором: он значительно оптимизирован по сравнению с V1 в отношении памяти, необходимой для восстановления и времени задержки. Независимо от этого флага, сохранитель способен восстанавливаться как из чекпоинтов V2, так и V1. |
pad_step_number | если True, номер глобального шага в путях файлов чекпоинтов дополняется до определённой фиксированной ширины (8 по умолчанию). По умолчанию выключено. |
save_relative_paths | Если True, записывает относительные пути к файлу состояния чекпоинта. Это необходимо, если пользователь хочет скопировать директорию чекпоинта и загрузить её из скопированной директории. |
filename | Если известно на стадии построения графа, используется имя файла для загрузки/сохранения переменных. |
| Возможные исключения | |
|---|---|
TypeError | Если var_list некорректен. |
ValueError | Если какие-либо из ключей или значений в var_list не уникальны. |
RuntimeError | Если выполняется eager execution, и var_list не задаёт список переменных для сохранения. |
| Атрибуты | |
|---|---|
last_checkpoints | Список имен файлов чекпоинтов, ещё не удалённых. Вы можете передать любое из возвращённых значений в |
Методы
as_saver_def
as_saver_def()
Генерирует представление SaverDef этого сохранителя.
| Возвращает | |
|---|---|
Протокол SaverDef . |
build
build()
export_meta_graph
export_meta_graph(
filename=None, collection_list=None, as_text=False, export_scope=None,
clear_devices=False, clear_extraneous_savers=False, strip_default_attrs=False,
save_debug_info=False
)
Записывает MetaGraphDef в save_path/filename.
| Аргументы | |
|---|---|
filename | Необязательное имя файла meta_graph, включая путь. |
collection_list | Список строковых ключей для сбора. |
as_text | Если True, записывает meta_graph как ASCII-протокол. |
export_scope | Необязательный string. Scope имени для удаления. |
clear_devices | Удалять или нет поле устройства для Operation или Tensor во время экспорта. |
clear_extraneous_savers | Удаляет любую информацию, связанную с сохранителем из графа (операции Save/Restore и SaverDefs), не связанные с этим сохранителем. |
strip_default_attrs | Булево. Если True, атрибуты с значением по умолчанию будут удалены из NodeDefs. Для подробного руководства см. Удаление атрибутов по умолчанию. |
save_debug_info | Если True, сохраняет GraphDebugInfo в отдельный файл в той же директории, что и файл filename, с _debug добавленным перед расширением файла. |
| Возвращает | |
|---|---|
Протокол MetaGraphDef . |
from_proto
@staticmethod
from_proto(
saver_def, import_scope=None
)
Возвращает объект Saver созданный из saver_def.
| Аргументы | |
|---|---|
saver_def | Протокол буфера SaverDef . |
import_scope | Необязательный string. Имя scope. |
| Возвращает | |
|---|---|
Объект Saver созданный из saver_def. |
recover_last_checkpoints
recover_last_checkpoints(
checkpoint_paths
)
Восстанавливает внутреннее состояние сохранителя после сбоя.
Этот метод полезен для восстановления состояния "self._last_checkpoints".
Шаблоны для контрольных точек, на которые указывает checkpoint_paths. Если файлы существуют, используйте их mtime в качестве отметки времени контрольной точки.
| Аргументы | |
|---|---|
checkpoint_paths | список путей к контрольным точкам. |
restore
restore(
sess, save_path
)
Восстанавливает ранее сохранённые переменные.
Этот метод выполняет операции, добавленные конструктором для восстановления переменных. Он требует сессии, в которой был запущен граф. Переменные для восстановления не обязательно должны быть инициализированы, так как восстановление само по себе является способом инициализации переменных.
Аргумент save_path обычно является значением, ранее возвращённым из вызова save(), или из вызова latest_checkpoint()
| Аргументы | |
|---|---|
sess | Сессия для восстановления параметров. None в режиме eager. |
save_path | Путь, где параметры были ранее сохранены. |
| Исключения | |
|---|---|
ValueError | Если save_path равен None или не является допустимой контрольной точкой. |
save
save(
sess, save_path, global_step=None, latest_filename=None,
meta_graph_suffix='meta', write_meta_graph=True, write_state=True,
strip_default_attrs=False, save_debug_info=False
)
Сохраняет переменные.
Этот метод выполняет операции, добавленные конструктором для сохранения переменных. Он требует сессии, в которой был запущен граф. Переменные для сохранения также должны быть инициализированы.
Метод возвращает префикс пути к недавно созданным файлам контрольных точек. Эта строка может быть непосредственно передана в вызов restore().
| Аргументы | |
|---|---|
sess | Сессия для сохранения переменных. |
save_path | Строка. Префикс имён файлов, созданных для контрольной точки. |
global_step | Если предоставлен, номер глобального шага добавляется к save_path для создания имён файлов контрольных точек. Дополнительный аргумент может быть целым числом, именем глобального шага или объектом. |
latest_filename | Необязательное имя файла протокола, который будет содержать список самых последних контрольных точек. Этот файл, хранящийся в той же директории, что и файлы контрольных точек, автоматически управляется saver для отслеживания последних контрольных точек. По умолчанию 'checkpoint'. |
meta_graph_suffix | Суффикс для файла MetaGraphDef . По умолчанию 'meta'. |
write_meta_graph | Флаг, указывающий, нужно ли записывать файл метаграфа. |
write_state | Флаг, указывающий, нужно ли записывать CheckpointStateProto. |
strip_default_attrs | Логическое значение. Если True, атрибуты с дефолтными значениями будут удалены из NodeDefs. Подробнее см. Удаление атрибутов с дефолтными значениями. |
save_debug_info | Если True, сохранить GraphDebugInfo в отдельный файл в той же директории, что и save_path, с _debug добавленным перед расширением файла. Это включено только при write_meta_graph в значении True |
| Возвращаемое значение | |
|---|---|
| Строка: префикс пути, используемый для файлов контрольных точек. Если saver фрагментирован, эта строка заканчивается: '-?????-of-nnnnn', где 'nnnnn' — количество фрагментов. Если saver пуст, возвращает None. |
| Исключения | |
|---|---|
TypeError | Если sess не является Session . |
ValueError | Если latest_filename содержит компоненты пути или конфликтует с save_path . |
RuntimeError | Если операции сохранения и восстановления не были построены. |
set_last_checkpoints
set_last_checkpoints(
last_checkpoints
)
УСТАРЕЛО: Используйте set_last_checkpoints_with_time.
Устанавливает список старых имён файлов контрольных точек.
| Аргументы | |
|---|---|
last_checkpoints | Список имён файлов контрольных точек. |
| Исключения | |
|---|---|
AssertionError | Если last_checkpoints не является списком. |
set_last_checkpoints_with_time
set_last_checkpoints_with_time(
last_checkpoints_with_time
)
Устанавливает список старых имён файлов контрольных точек и отметки времени.
| Аргументы | |
|---|---|
last_checkpoints_with_time | Список кортежей из имён файлов контрольных точек и отметок времени. |
| Исключения | |
|---|---|
AssertionError | Если last_checkpoints_with_time не является списком. |
to_proto
to_proto(
export_scope=None
)
Преобразует этот Saver в протокол буфер SaverDef.
| Аргументы | |
|---|---|
export_scope | Необязательный имя области имён. |
| Возвращаемое значение | |
|---|---|
Протокол буфер SaverDef . |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/train/Saver