Spec-Zone.ru › TensorFlow 2.4

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 часа обучения. Значение по умолчанию 10000 часов фактически отключает эту функцию.

Обратите внимание, что для сохранения модели все равно необходимо вызвать метод 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 Частота сохранения чекпоинтов. По умолчанию 10000 часов.
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 Если выполняется жадное выполнение, и 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, записывает метаграф в виде ASCII-протокола.
export_scope Необязательный string. Область имен для удаления.
clear_devices Нужно ли очищать поле устройства для Operation или Tensor при экспорте.
clear_extraneous_savers Удалить любую информацию, связанную с Saveром из графа (как операции 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.

Аргументы
saver_def Протокол буфера SaverDef .
import_scope Необязательное string. Область имен для использования.
Возвращает
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 Сессия для восстановления параметров. В режиме eager — None.
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.4/api_docs/python/tf/compat/v1/train/Saver

Spec-Zone.ru

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