Spec-Zone.ru › TensorFlow 2.4

tf.data.experimental.CheckpointInputPipelineHook

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

Создаёт контрольные точки состояния конвейера ввода данных через N шагов или секунд.

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

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

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

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

tf.compat.v1.data.experimental.CheckpointInputPipelineHook

tf.data.experimental.CheckpointInputPipelineHook(
    estimator, external_state_policy='fail'
)

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

Отличия от CheckpointSaverHook:

  1. Сохраняет только конвейеры ввода данных в коллекции «итераторы», а не глобальные переменные или другие сохраняемые объекты.
  2. Не записывает GraphDef и MetaGraphDef в сводку.

Пример сохранения контрольной точки конвейера обучения:

est = tf.estimator.Estimator(model_fn)
while True:
  est.train(
      train_input_fn,
      hooks=[tf.data.experimental.CheckpointInputPipelineHook(est)],
      steps=train_steps_per_eval)
  # Note: We do not pass the hook here.
  metrics = est.evaluate(eval_input_fn)
  if should_stop_the_training(metrics):
    break

Этот хук следует использовать, если состояние конвейера ввода данных необходимо сохранять отдельно от контрольной точки модели. Это может быть полезно по нескольким причинам:

  1. Контрольная точка конвейера ввода данных может быть большой, если, например, есть большие буферы перемешивания или предварительной выборки, и может увеличить размер контрольной точки.
  2. Если конвейер ввода данных используется как для обучения, так и для проверки, восстановление контрольной точки во время проверки может перезаписать конвейер ввода данных для проверки.

Для сохранения контрольной точки конвейера ввода данных вместе с весами модели используйте tf.data.experimental.make_saveable_from_iterator напрямую для создания SaveableObject и добавления в коллекцию SAVEABLE_OBJECTS. Однако, следует быть внимательным, чтобы не восстанавливать итератор обучения во время оценки. Это можно сделать, не добавляя итератор в коллектор SAVEABLE_OBJECTS при построении графа оценки.

Аргументы
estimator Обучающая программа.
external_state_policy Строка, определяющая, как обрабатывать конвейеры ввода данных, зависящие от внешнего состояния. Возможные значения: «ignore» — внешнее состояние игнорируется без сообщений; «warn» — внешнее состояние игнорируется с предупреждением; «fail» — операция завершается неудачей при обнаружении внешнего состояния. По умолчанию устанавливается в «fail».
Исключения
ValueError Должен быть установлен один из save_steps или save_secs.
ValueError Должен быть установлен только один из saver или scaffold.
ValueError Если external_state_policy не является одним из «warn», «ignore» или «fail».

Методы

after_create_session

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

after_create_session(
    session, coord
)

Вызывается при создании новой сессии TensorFlow.

Вызывается для уведомления хуков о создании новой сессии. Это имеет два существенных отличия от ситуации, в которой вызывается begin:

  • При вызове граф завершён, и к графу больше нельзя добавлять операции.
  • Этот метод также будет вызван в результате восстановления обернутой сессии, а не только в начале общей сессии.
Аргументы
session Созданная сессия TensorFlow.
coord Объект Coordinator, отслеживающий все потоки.

after_run

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

after_run(
    run_context, run_values
)

Вызывается после каждого вызова run().

Аргумент run_values содержит результаты запрошенных операций/тензоров вызовом before_run().

Аргумент run_context — тот же, что и переданный вызову before_run. Можно вызвать run_context.request_stop(), чтобы остановить итерацию.

Если session.run() вызывает какие-либо исключения, то after_run() не вызывается.

Аргументы
run_context Объект SessionRunContext.
run_values Объект SessionRunValues.

before_run

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

before_run(
    run_context
)

Вызывается перед каждым вызовом run().

Из этого вызова можно вернуть объект SessionRunArgs, указывающий операции или тензоры для добавления в предстоящий вызов run(). Эти операции/тензоры будут выполнены вместе с операциями/тензорами, изначально переданными в исходный вызов run(). Аргументы вызова run, которые вы возвращаете, также могут содержать данные для добавления в вызов run().

Аргумент run_context — это объект SessionRunContext, который предоставляет информацию о предстоящем вызове run(): изначально запрошенные операции/тензоры, сессия TensorFlow.

На этом этапе граф завершен, и к нему больше нельзя добавлять операций.

Аргументы
run_context Объект SessionRunContext.
Возвращаемое значение
None или объект SessionRunArgs.

begin

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

begin()

Вызывается один раз перед использованием сессии.

При вызове используется стандартный граф, который будет запущен в сессии. Хук может изменять граф, добавляя к нему новые операции. После вызова begin() граф завершится, и другие обратные вызовы больше не смогут его изменить. Второй вызов begin() в том же графе не должен изменять граф.

end

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

end(
    session
)

Вызывается в конце сессии.

Аргумент session можно использовать в случае, если хук хочет выполнить окончательные операции, такие как сохранение последней контрольной точки.

Если session.run() вызывает исключение, отличное от OutOfRangeError или StopIteration, то end() не вызывается. Обратите внимание на различие в поведении end() и after_run() при том, что session.run() вызывает OutOfRangeError или StopIteration. В этом случае end() вызывается, но after_run() не вызывается.

Аргументы
session Сессия TensorFlow, которая будет закрыта вскоре.

© 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/data/experimental/CheckpointInputPipelineHook

Spec-Zone.ru

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