Spec-Zone.ru › TensorFlow 1.15

tf.train.Saver

Сохраняет и восстанавливает переменные.

Просмотр псевдонимов

Псевдонимы совместимости для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.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 Список имен файлов чекпоинтов, ещё не удалённых.

Вы можете передать любое из возвращённых значений в restore().

Методы

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API