tf.compat.v1.train.Saver
Сохраняет и восстанавливает переменные.
tf.compat.v1.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().
| Args | |
|---|---|
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 | Если известен во время построения графа, имя файла, используемое для загрузки/сохранения переменных. |
| Raises | |
|---|---|
TypeError | Если var_list некорректен. |
ValueError | Если какие-либо ключи или значения в var_list не уникальны. |
RuntimeError | Если выполняется жадное выполнение, и var_list не указывает список переменных для сохранения. |
| Attributes | |
|---|---|
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.
| Args | |
|---|---|
filename | Необязательное имя файла meta_graph, включая путь. |
collection_list | Список строковых ключей для сбора. |
as_text | Если True, записывает метаграф как ASCII-протокол. |
export_scope | Необязательный string. Scope имени для удаления. |
clear_devices | Флаг того, нужно ли очищать поле устройства для Operation или Tensor во время экспорта. |
clear_extraneous_savers | Удаляет любую информацию, связанную с Save/Restore операциями и SaverDefs, которая не ассоциирована с этим Saveром. |
strip_default_attrs | Булево значение. Если True, атрибуты с по умолчанию будут удалены из NodeDefs. Для подробного руководства см. Удаление атрибутов по умолчанию. |
save_debug_info | Если True, сохраняет GraphDebugInfo в отдельный файл в той же директории, что и файл с именем, с добавленным префиксом _debug перед расширением файла. |
| Возвращает | |
|---|---|
Протокол MetaGraphDef . |
from_proto
@staticmethod
from_proto(
saver_def, import_scope=None
)
Возвращает объект Saver, созданный из saver_def.
| Args | |
|---|---|
saver_def | протокол-буфер SaverDef . |
import_scope | Необязательный string. Имя scope. |
| Возвращает | |
|---|---|
Объект Saver , построенный из saver_def. |
recover_last_checkpoints
recover_last_checkpoints(
checkpoint_paths
)
Восстанавливает внутреннее состояние сохранителя после сбоя.
Этот метод полезен для восстановления состояния «self._last_checkpoints».
Ищет контрольные точки, указанные в checkpoint_paths. Если файлы существуют, использует их mtime как временную метку контрольной точки.
| Args | |
|---|---|
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 для создания имён файлов контрольного пункта. Дополнительный аргумент может быть целым числом, именем Tensor или объектом Tensor. |
latest_filename | Необязательное имя файла протобуфера, который будет содержать список последних контрольных пунктов. Этот файл, хранящийся в той же директории, что и файлы контрольного пункта, автоматически управляется сохранителем, чтобы отслеживать последние контрольные пункты. По умолчанию '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 |
| Возвращаемые значения | |
|---|---|
| Строка: префикс пути, используемый для файлов контрольного пункта. Если сохранитель фрагментирован, эта строка заканчивается: '-?????-of-nnnnn', где 'nnnnn' - количество фрагментов. Если сохранитель пуст, возвращает 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 | Необязательный string. Имя области именования для удаления. |
| Возвращаемые значения | |
|---|---|
Протобуфер 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/r2.3/api_docs/python/tf/compat/v1/train/Saver