Spec-Zone.ru › TensorFlow 1.15

tf.compat.v2.train.Checkpoint

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

Наследуется от: Checkpointable

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

Конструктор Checkpoint принимает ключевые аргументы, значения которых являются типами, содержащими отслеживаемое состояние, такими как реализации tf.keras.optimizers.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))
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 TensorFlow 1.x, который записывает и считывает контрольные точки на основе variable.name. Контрольные точки на основе объектов сохраняют граф зависимостей между объектами Python (Layer , Optimizer , Variable и т. д.) с именованными ребрами, и этот граф используется для сопоставления переменных при восстановлении контрольной точки. Это может быть более устойчиво к изменениям в программе Python и помогает поддерживать восстановление при создании переменных.

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

class Regress(tf.keras.Model):

  def __init__(self):
    super(Regress, self).__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 и любые объекты, от которых она зависит.

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

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

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

Будет выброшено исключение, если какие-либо объекты Python в графе зависимостей не были найдены в контрольной точке или если какие-либо сохраненные значения не имеют соответствующего объекта Python.

Контрольные точки tf.compat.v1.train.Saver на основе имен из TensorFlow 1.x могут быть загружены с помощью этого метода. Имена используются для сопоставления переменных. Перекодируйте контрольные точки на основе имен, используя 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 в графе зависимостей, у которых нет значений в контрольной точке. Этот метод возвращает объект состояния, и поэтому его можно использовать с другими утверждениями.

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

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

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

save

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

save(
    file_prefix
)

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

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

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

Аргументы
file_prefix Префикс, используемый для имён файлов контрольной точки (/путь/к/каталогу/и_префикс). Имена генерируются на основе этого префикса и Checkpoint.save_counter.
Возвращаемое значение
Полный путь к контрольной точке.

write

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

write(
    file_prefix
)

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

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

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

Аргументы
file_prefix Префикс, используемый для имён файлов контрольной точки (/путь/к/каталогу/и_префикс).
Возвращаемое значение
Полный путь к контрольной точке (т.е. file_prefix).

© 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/compat/v2/train/Checkpoint

Spec-Zone.ru

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