Spec-Zone.ru › TensorFlow 2.3

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

Вы можете передать любое из возвращённых значений в 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.

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 список путей к контрольным точкам.
END_OF_DOCUMENT_MARKER ```

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

Spec-Zone.ru

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