Spec-Zone.ru › TensorFlow

tf.compat.v1.train.Checkpoint

Группирует отслеживаемые объекты, сохраняя и восстанавливая их.

tf.compat.v1.train.Checkpoint(
    **kwargs
)

Конструктор Checkpoint принимает именованные аргументы, значениями которых являются типы, содержащие отслеживаемое состояние, например реализации tf.compat.v1.train.Optimizer, tf.Variable, реализации tf.keras.Layer или реализации tf.keras.Model. Он сохраняет эти значения в контрольной точке и поддерживает save_counter для нумерации контрольных точек.

Пример использования при построении графа:

import tensorflow as tf
import os

checkpoint_directory = "/tmp/training_checkpoints"
checkpoint_prefix = os.path.join(checkpoint_directory, "ckpt")

checkpoint = tf.train.Checkpoint(optimizer=optimizer, model=model)
status = checkpoint.restore(tf.train.latest_checkpoint(checkpoint_directory))
train_op = optimizer.minimize( ... )
status.assert_consumed()  # Optional sanity checks.
with tf.compat.v1.Session() as session:
  # Use the Session to restore variables, or initialize them if
  # tf.train.latest_checkpoint returned None.
  status.initialize_or_restore(session)
  for _ in range(num_training_steps):
    session.run(train_op)
  checkpoint.save(file_prefix=checkpoint_prefix)

Пример использования с включенным немедленным выполнением:

import tensorflow as tf
import os

tf.compat.v1.enable_eager_execution()

checkpoint_directory = "/tmp/training_checkpoints"
checkpoint_prefix = os.path.join(checkpoint_directory, "ckpt")

checkpoint = tf.train.Checkpoint(optimizer=optimizer, model=model)
status = checkpoint.restore(tf.train.latest_checkpoint(checkpoint_directory))
for _ in range(num_training_steps):
  optimizer.minimize( ... )  # Variables will be restored on creation.
status.assert_consumed()  # Optional sanity checks.
checkpoint.save(file_prefix=checkpoint_prefix)

Checkpoint.save и Checkpoint.restore записывают и считывают контрольные точки на основе объектов, в отличие от tf.compat.v1.train.Saver, которая записывает и считывает контрольные точки на основе variable.name. При сохранении контрольных точек на основе объектов сохраняется граф зависимостей между объектами Python (Layers, Optimizers, Variables и т. д.) с именованными ребрами; этот граф используется для сопоставления переменных при восстановлении контрольной точки. Такой подход может быть более устойчивым к изменениям в программе Python и позволяет поддерживать восстановление при создании переменных во время немедленного выполнения. Для нового кода предпочтительнее использовать tf.train.Checkpoint, а не tf.compat.v1.train.Saver.

Объекты Checkpoint зависят от объектов, переданных в качестве именованных аргументов их конструкторам; каждой зависимости присваивается имя, совпадающее с именем соответствующего именованного аргумента. Классы TensorFlow, такие как Layers и Optimizers, автоматически добавляют зависимости от своих переменных (например, «kernel» и «bias» для tf.keras.layers.Dense). Наследование от tf.keras.Model упрощает управление зависимостями в пользовательских классах, поскольку Model отслеживает присваивание атрибутов. Например:

class Regress(tf.keras.Model):

  def __init__(self):
    super().__init__()
    self.input_transform = tf.keras.layers.Dense(10)
    # ...

  def call(self, inputs):
    x = self.input_transform(inputs)
    # ...

У этого Model есть зависимость с именем «input_transform» от слоя Dense, который, в свою очередь, зависит от своих переменных. В результате при сохранении экземпляра Regress с помощью tf.train.Checkpoint будут также сохранены все переменные, созданные слоем Dense.

Если переменные распределены между несколькими рабочими процессами, каждый рабочий процесс записывает свою часть контрольной точки. Затем эти части объединяются и переиндексируются, чтобы сформировать единую контрольную точку. Это позволяет не копировать все переменные на один рабочий процесс, но требует, чтобы у всех рабочих процессов была общая файловая система.

Хотя tf.keras.Model.save_weights и tf.train.Checkpoint.save сохраняют данные в одном формате, обратите внимание: корневым объектом результирующей контрольной точки является объект, к которому относится метод сохранения. Это означает, что сохранение tf.keras.Model с помощью save_weights и загрузка в tf.train.Checkpoint с присоединенным Model (или наоборот) не приведут к сопоставлению переменных Model. Подробности см. в руководстве по контрольным точкам обучения. Для контрольных точек обучения предпочтительнее использовать tf.train.Checkpoint, а не tf.keras.Model.save_weights.

Аргументы
**kwargs Именованные аргументы задаются как атрибуты этого объекта и сохраняются вместе с контрольной точкой. Значения должны быть отслеживаемыми объектами.
Исключения
ValueError Если объекты в kwargs не являются отслеживаемыми.
Атрибуты
save_counter Увеличивается при вызове save(). Используется для нумерации контрольных точек.

Методы

restore

Посмотреть исходный код

restore(
    save_path
)

Восстанавливает контрольную точку обучения.

Восстанавливает этот объект Checkpoint и все объекты, от которых он зависит.

При немедленном выполнении значения присваиваются сразу, если переменные для восстановления уже созданы; в противном случае восстановление откладывается до создания переменных. Зависимости, добавленные после этого вызова, будут сопоставлены, если в контрольной точке есть соответствующий объект (запрос на восстановление будет ожидать в любом отслеживаемом объекте добавления ожидаемой зависимости).

При построении графа операции восстановления добавляются в граф, но не выполняются сразу.

checkpoint = tf.train.Checkpoint( ... )
checkpoint.restore(path)

Чтобы убедиться, что загрузка завершена и отложенное восстановление больше не будет выполняться, можно использовать метод assert_consumed() объекта состояния, возвращаемого вызовом restore. Утверждение вызовет исключение, если в графе зависимостей не найдены какие-либо объекты Python или если значения из контрольной точки не соответствуют ни одному объекту Python:

checkpoint = tf.train.Checkpoint( ... )
checkpoint.restore(path).assert_consumed()

При построении графа вызов assert_consumed() указывает, что созданы все операции восстановления, которые будут созданы для этой контрольной точки. Их можно выполнить с помощью метода run_restore_ops() объекта состояния:

checkpoint.restore(path).assert_consumed().run_restore_ops()

Если контрольная точка восстановлена не полностью, список операций восстановления будет увеличиваться по мере добавления новых объектов в граф зависимостей.

Чтобы проверить, что все переменные в объекте Python восстановлены из контрольной точки, используйте assert_existing_objects_matched(). Это утверждение полезно вызывать после создания переменных в графе.

С помощью этого метода можно загружать контрольные точки tf.compat.v1.train.Saver на основе имен. Для сопоставления переменных используются имена. При построении графа операции восстановления не создаются и не запускаются до вызова run_restore_ops() или initialize_or_restore() для возвращенного объекта состояния; при немедленном выполнении восстановление происходит при создании переменных. Как можно скорее преобразуйте контрольные точки на основе имен с помощью tf.train.Checkpoint.save.

Аргументы
save_path Путь к контрольной точке, возвращенный вызовом save или tf.train.latest_checkpoint. Если значение равно None (например, когда для tf.train.latest_checkpoint нет последней контрольной точки, которую можно вернуть), возвращается объект, который может запускать инициализаторы объектов в графе зависимостей. Если контрольная точка была записана с помощью tf.compat.v1.train.Saver на основе имен, для сопоставления переменных используются имена.
Возвращает
Объект состояния загрузки, который можно использовать для проверки состояния восстановления контрольной точки и запуска операций инициализации/восстановления.

Возвращенный объект состояния имеет следующие методы:

  • assert_consumed(): вызывает исключение, если есть несопоставленные переменные: значения из контрольной точки, которым не соответствует объект Python, или объекты Python в графе зависимостей, для которых в контрольной точке нет значений. Этот метод возвращает объект состояния, поэтому его можно объединять в цепочку с initialize_or_restore или run_restore_ops.

  • assert_existing_objects_matched(): вызывает исключение, если какие-либо существующие объекты Python в графе зависимостей не сопоставлены. В отличие от assert_consumed, это утверждение выполняется успешно, даже если значения в контрольной точке не имеют соответствующих объектов Python. Например, объект tf.keras.Layer, который еще не построен и поэтому не создал переменных, пройдет эту проверку, но не пройдет assert_consumed. Это полезно при загрузке части более крупной контрольной точки в новую программу Python, например если была сохранена контрольная точка обучения с tf.compat.v1.train.Optimizer, но загружается только состояние, необходимое для вывода. Этот метод возвращает объект состояния, поэтому его можно объединять в цепочку с initialize_or_restore или run_restore_ops.

  • assert_nontrivial_match(): проверяет, что сопоставлен хотя бы один объект помимо корневого. Это очень слабая проверка, но она полезна для быстрой проверки в библиотечном коде, где в контрольной точке могут быть объекты, не созданные в Python, а для некоторых объектов Python могут отсутствовать сохраненные значения.

  • expect_partial(): отключает предупреждения о неполном восстановлении контрольной точки. В противном случае при удалении объекта Checkpoint (часто при завершении программы) выводятся предупреждения о неиспользованных частях файла контрольной точки или объекта.

  • initialize_or_restore(session=None): при построении графа запускает инициализаторы переменных, если save_path равно None, а в противном случае запускает операции восстановления. Если session явно не задан, используется сеанс по умолчанию. Не действует при немедленном выполнении (переменные инициализируются или восстанавливаются сразу).

  • run_restore_ops(session=None): при построении графа запускает операции восстановления. Если session явно не задан, используется сеанс по умолчанию. Не действует при немедленном выполнении (операции восстановления выполняются сразу). Можно вызывать только тогда, когда save_path не равно None.

save

Посмотреть исходный код

save(
    file_prefix, session=None, options=None
)

Сохраняет контрольную точку обучения и предоставляет базовые средства управления контрольными точками.

Сохраненная контрольная точка включает переменные, созданные этим объектом, и все отслеживаемые объекты, от которых он зависит на момент вызова Checkpoint.save().

save — это простая удобная оболочка для метода write, которая последовательно нумерует контрольные точки с помощью save_counter и обновляет метаданные, используемые в tf.train.latest_checkpoint. Более сложные средства управления контрольными точками, например сборка мусора и пользовательская нумерация, могут предоставляться другими утилитами, которые также являются оболочками для write (например, tf.train.CheckpointManager).

Аргументы
file_prefix Префикс для имен файлов контрольных точек (/path/to/directory/and_a_prefix). Имена формируются на основе этого префикса и Checkpoint.save_counter.
session Сеанс для вычисления значений переменных. Игнорируется при немедленном выполнении. Если при построении графа сеанс не указан, используется сеанс по умолчанию.
options Необязательный объект tf.train.CheckpointOptions.
Возвращает
Полный путь к контрольной точке.

write

Посмотреть исходный код

write(
    file_prefix, session=None, options=None
)

Записывает контрольную точку обучения.

Контрольная точка включает переменные, созданные этим объектом, и все отслеживаемые объекты, от которых он зависит на момент вызова Checkpoint.write().

write не нумерует контрольные точки, не увеличивает save_counter и не обновляет метаданные, используемые в tf.train.latest_checkpoint. Этот метод предназначен главным образом для использования утилитами управления контрольными точками более высокого уровня. save предоставляет очень простую реализацию этих возможностей.

Аргументы
file_prefix Префикс для имен файлов контрольных точек (/path/to/directory/and_a_prefix).
session Сеанс для вычисления значений переменных. Игнорируется при немедленном выполнении. Если при построении графа сеанс не указан, используется сеанс по умолчанию.
options Необязательный объект tf.train.CheckpointOptions.
Возвращает
Полный путь к контрольной точке (т. е. file_prefix).

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/compat/v1/train/Checkpoint

Spec-Zone.ru

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