Spec-Zone.ru › TensorFlow 2.9

tf.compat.v1.train.Supervisor

Помощник для обучения, который создаёт контрольные точки моделей и вычисляет сводки.

tf.compat.v1.train.Supervisor(
    graph=None,
    ready_op=USE_DEFAULT,
    ready_for_local_init_op=USE_DEFAULT,
    is_chief=True,
    init_op=USE_DEFAULT,
    init_feed_dict=None,
    local_init_op=USE_DEFAULT,
    logdir=None,
    summary_op=USE_DEFAULT,
    saver=USE_DEFAULT,
    global_step=USE_DEFAULT,
    save_summaries_secs=120,
    save_model_secs=600,
    recovery_wait_secs=30,
    stop_grace_secs=120,
    checkpoint_basename='model.ckpt',
    session_manager=None,
    summary_writer=USE_DEFAULT,
    init_fn=None,
    local_init_run_options=None
)

Этот класс устарел. Пожалуйста, используйте tf.compat.v1.train.MonitoredTrainingSession вместо него.

Supervisor — это небольшой оболочка вокруг Coordinator, Saver, и SessionManager, который обрабатывает общие потребности программ обучения TensorFlow.

Использование для одной программы

with tf.Graph().as_default():
  ...add operations to the graph...
  # Create a Supervisor that will checkpoint the model in '/tmp/mydir'.
  sv = Supervisor(logdir='/tmp/mydir')
  # Get a TensorFlow session managed by the supervisor.
  with sv.managed_session(FLAGS.master) as sess:
    # Use the session to train the graph.
    while not sv.should_stop():
      sess.run(<my_train_op>)

Внутри блока with sv.managed_session() все переменные в графе были инициализированы. Кроме того, несколько служб были запущены для создания контрольных точек модели и добавления сводок в журнал событий.

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

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

Исключения, которые указывают на то, что входные данные для обучения исчерпаны, tf.errors.OutOfRangeError, также заставляют sv.should_stop() возвращать True, но не повторно поднимать их из блока with: они указывают на нормальное завершение.

Использование для нескольких реплик

Для обучения с репликами вы развертываете одну и ту же программу в Cluster. Одна из задач должна быть идентифицирована как главная: задача, которая обрабатывает инициализацию, контрольные точки, сводки и восстановление. Другие задачи зависят от главной задачи для этих служб.

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

# Choose a task as the chief. This could be based on server_def.task_index,
# or job_def.name, or job_def.tasks. It's entirely up to the end user.
# But there can be only one *chief*.
is_chief = (server_def.task_index == 0)
server = tf.distribute.Server(server_def)

with tf.Graph().as_default():
  ...add operations to the graph...
  # Create a Supervisor that uses log directory on a shared file system.
  # Indicate if you are the 'chief'
  sv = Supervisor(logdir='/shared_directory/...', is_chief=is_chief)
  # Get a Session in a TensorFlow server on the cluster.
  with sv.managed_session(server.target) as sess:
    # Use the session to train the graph.
    while not sv.should_stop():
      sess.run(<my_train_op>)

В задаче главной Supervisor работает точно так же, как в первом примере выше. В других задачах sv.managed_session() ожидает, пока модель не будет инициализирована, прежде чем возвращать сессию коду обучения. Задачи, не являющиеся главными, зависят от главной задачи для инициализации модели.

Если одна из задач аварийно завершается и перезапускается, managed_session() проверяет, инициализирована ли модель. Если да, то она просто создаёт сессию и возвращает её коду обучения, который продолжает работу нормально. Если модель нужно инициализировать, главная задача позаботится об её повторной инициализации; другие задачи просто ожидают инициализации модели.

Примечание: Эта изменённая программа по-прежнему работает нормально как программа для одной задачи. Программа для одной задачи отмечает себя как главную.

Какой использовать строку master

Как на вашей машине, так и в кластере вы можете использовать следующие значения для флага --master:

  • Указание '' запрашивает сессию в процессе, которая не использует RPC.

  • Указание 'local' запрашивает сессию, которая использует RPC-интерфейс «Интерфейс мастера» для запуска программ TensorFlow. Подробнее см. tf.train.Server.create_local_server.

  • Указание 'grpc://hostname:port' запрашивает сессию, которая использует интерфейс RPC к определённому хосту, а также позволяет мастеру в процессе получать доступ к удалённым рабочим узлам TensorFlow. Часто уместно передать server.target (для некоторого tf.distribute.Server с именем `server`).

Расширенное использование

Запуск дополнительных служб

managed_session() запускает службы «Контрольные точки» и «Сводки» (потоки). Если вам необходимо запустить больше служб, вы можете просто запустить их в блоке, контролируемом managed_session().

Пример: Запустить поток для печати потерь. Мы хотим, чтобы этот поток выполнялся каждые 60 секунд, поэтому мы запускаем его с sv.loop().

...
sv = Supervisor(logdir='/tmp/mydir')
with sv.managed_session(FLAGS.master) as sess:
  sv.loop(60, print_loss, (sess, ))
  while not sv.should_stop():
    sess.run(my_train_op)
Запуск меньшего количества служб

managed_session() запускает потоки «сводка» и «контрольные точки», которые используют необязательные summary_op и saver, переданные в конструктор, или созданные автоматически Supervisor. Если вы хотите запустить собственную логику сводок и создания контрольных точек, отключите эти службы, передав None в параметры summary_op и saver.

Пример: Создать сводки вручную каждые 100 шагов в главной задаче.

# Create a Supervisor with no automatic summaries.
sv = Supervisor(logdir='/tmp/mydir', is_chief=is_chief, summary_op=None)
# As summary_op was None, managed_session() does not start the
# summary thread.
with sv.managed_session(FLAGS.master) as sess:
  for step in range(1000000):
    if sv.should_stop():
      break
    if is_chief and step % 100 == 0:
      # Create the summary every 100 chief steps.
      sv.summary_computed(sess, sess.run(my_summary_op))
    else:
      # Train normally
      sess.run(my_train_op)
Настраиваемая инициализация модели

managed_session() поддерживает только инициализацию модели путём запуска init_op или восстановления из последней контрольной точки. Если у вас есть особые потребности в инициализации, см. способ указания local_init_op при создании Supervisor. Вы также можете использовать SessionManager напрямую для создания сессии и проверки возможности автоматической инициализации.

Аргументы
graph Граф, который будет использовать модель. По умолчанию — стандартный граф. Supervisor может добавлять операции в граф перед созданием сессии, но граф не должен изменяться вызывающей стороной после передачи его Supervisor.
ready_op Строковый массив Tensor. Этот тензор оценивается Supervisor в prepare_or_wait_for_session() для проверки готовности модели к использованию. Модель считается готовой, если она возвращает пустой массив. По умолчанию — тензор, возвращаемый из tf.compat.v1.report_uninitialized_variables() Если None, модель не проверяется на готовность.
ready_for_local_init_op Строковый массив Tensor. Этот тензор оценивается Supervisor в prepare_or_wait_for_session() для проверки готовности модели к запуску local_init_op. Модель считается готовой, если она возвращает пустой массив. По умолчанию — None. Если None, модель не проверяется на готовность перед запуском local_init_op.
is_chief Если True, создайте главного Supervisor, ответственного за инициализацию и восстановление модели. Если False, создайте Supervisor, который полагается на главного Supervisor для инициализации и восстановления.
init_op Operation. Используется главными Supervisor для инициализации модели, когда её нельзя восстановить. По умолчанию — Operation, который инициализирует все глобальные переменные. Если None, автоматическая инициализация не выполняется, если вы не передадите значение для init_fn, см. ниже.
init_feed_dict Словарь, сопоставляющий объекты Tensor со значениями кортежа. Этот словарь кортежа будет использоваться при оценке init_op
local_init_op Operation. Используется всеми Supervisor для запуска инициализаций, которые должны выполняться для каждого нового экземпляра Supervisor. По умолчанию это инициализаторы таблиц и переменных локального уровня. Если None, дальнейшая инициализация на уровне экземпляра Supervisor не выполняется автоматически.
logdir Строка. Необязательный путь к каталогу, где нужно создать контрольные точки модели и регистрировать события для визуализатора. Используется главными Supervisor. Каталог будет создан, если он не существует.
summary_op Функция, возвращающая Summary для журналов событий. Используется главными Supervisor, если указана logdir. По умолчанию — операция, возвращаемая из summary.merge_all(). Если None, сводки не вычисляются автоматически.
saver Объект Saver. Используется главными Supervisor, если указана logdir. По умолчанию — сохранённый объект, возвращаемый Saver(). Если None, модель не сохраняется автоматически.
global_step Целочисленный тензор размера 1, который считает шаги. Значение из 'global_step' используется в сводках и именах файлов контрольных точек. По умолчанию — операция с именем 'global_step' в графе, если она существует, имеет ранг 1, размер 1 и тип tf.int32 или tf.int64. Если None, глобальный шаг не записывается в сводки и файлы контрольных точек. Используется главными Supervisor, если указан logdir.
save_summaries_secs Количество секунд между вычислением сводок для журнала событий. По умолчанию — 120 секунд. Передайте 0, чтобы отключить сводки.
save_model_secs Количество секунд между созданием контрольных точек модели. По умолчанию — 600 секунд. Передайте 0, чтобы отключить контрольные точки.
recovery_wait_secs Количество секунд между проверками готовности модели. Используется Supervisor при ожидании главного Supervisor для инициализации или восстановления модели. По умолчанию — 30 секунд.
stop_grace_secs Период ожидания, в секундах, предоставленный выполняющимся потокам для остановки при вызове stop(). По умолчанию — 120 секунд.
checkpoint_basename Базовое имя для сохранения контрольных точек.
session_manager SessionManager, который управляет созданием и восстановлением сессии. Если это None, будет создан стандартный SessionManager с набором аргументов, переданных для обеспечения обратной совместимости.
summary_writer Используемый SummaryWriter или USE_DEFAULT. Может быть None для указания того, что сводки не должны записываться.
init_fn Необязательная функция, используемая для инициализации модели. Вызывается после необязательного вызова init_op. Функция должна принимать один аргумент — сессию, которая инициализируется.
local_init_run_options RunOptions, которые должны быть переданы в качестве параметра SessionManager local_init_run_options.
Возбуждает
RuntimeError Если вызвана с включённым выполнением eager.
Атрибуты
coord Возвращает координатор, используемый надзирателем.

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

global_step Возвращает тензор global_step, используемый надзирателем.
init_feed_dict Возвращает словарь данных, используемый при оценке init_op.
init_op Возвращает оператор Init, используемый надзирателем.
is_chief Возвращает True, если это главный надзиратель.
ready_for_local_init_op
ready_op Возвращает оператор Ready, используемый надзирателем.
save_model_secs Возвращает задержку между контрольными точками.
save_path Возвращает путь сохранения, используемый надзирателем.
save_summaries_secs Возвращает задержку между вычислениями сводок.
saver Возвращает Saver, используемый надзирателем.
session_manager Возвращает SessionManager, используемый надзирателем.
summary_op Возвращает тензор Summary, используемый главным надзирателем.
summary_writer Возвращает SummaryWriter, используемый главным надзирателем.

Методы

Loop

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

Loop(
    timer_interval_secs, target, args=None, kwargs=None
)

Запускает LooperThread, который периодически вызывает функцию.

Если timer_interval_secs равно None, поток вызывает target(*args, **kwargs) многократно. В противном случае он вызывает его каждые timer_interval_secs секунды. Поток завершается при запросе остановки.

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

Аргументы
timer_interval_secs Число. Временные границы, в которые нужно вызывать target.
target Вызываемый объект.
args Необязательные аргументы для передачи в target при вызове.
kwargs Необязательные ключевые аргументы для передачи в target при вызове.
Возвращает
Запущенный поток.

PrepareSession

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

PrepareSession(
    master='',
    config=None,
    wait_for_checkpoint=False,
    max_wait_secs=7200,
    start_standard_services=True
)

Убедитесь, что модель готова к использованию.

Создаёт сессию на 'master', восстанавливая или инициализируя модель по мере необходимости или ожидая готовности сессии. Если выполняется как главный и start_standard_service установлено в True, также вызовите менеджер сессии для запуска стандартных служб.

Аргументы
master Имя TensorFlow master, который нужно использовать. См. конструктор tf.compat.v1.Session для того, как это интерпретируется.
config Необязательный протокол ConfigProto, используемый для конфигурирования сессии, который передаётся в create session как есть.
wait_for_checkpoint Нужно ли ожидать доступности контрольной точки перед созданием сессии. По умолчанию False.
max_wait_secs Максимальное время ожидания готовности сессии.
start_standard_services Нужно ли запускать стандартные службы и исполнители очередей.
Возвращает
Объект Session, который можно использовать для управления моделью.

RequestStop

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

RequestStop(
    ex=None
)

Запросить остановку потоков координатором.

См. Coordinator.request_stop().

Аргументы
ex Необязательное исключение, или кортеж Python, как возвращается sys.exc_info(). Если это первый вызов request_stop(), соответствующее исключение записывается и повторно генерируется в join().

ShouldStop

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

ShouldStop()

Проверить, было ли указано координатору остановиться.

См. Coordinator.should_stop().

Возвращает
True, если координатору было указано остановиться, False в противном случае.

StartQueueRunners

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

StartQueueRunners(
    sess, queue_runners=None
)

Запустить потоки для QueueRunners.

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

Аргументы
sess A Session.
queue_runners Список QueueRunners. Если не указан, используется список исполнителей очередей, собранных в графе под ключом GraphKeys.QUEUE_RUNNERS.
Возвращает
Список запущенных потоков для QueueRunners.
Возможные исключения
RuntimeError Если вызвана с включённым eager выполнением.

совместимость с eager

Очереди несовместимы с eager выполнением. Для получения данных при включённом eager выполнении используйте API tf.data.

StartStandardServices

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

StartStandardServices(
    sess
)

Запустить стандартные службы для 'sess'.

Это запускает службы в фоновом режиме. Запускаемые службы зависят от параметров конструктора и могут включать:

  • Поток сводок, вычисляющий сводки каждые save_summaries_secs.
  • Поток контрольных точек, сохраняющий модель каждые save_model_secs.
  • Поток StepCounter, измеряющий время шага.
Аргументы
sess A Session.
Возвращает
Список потоков, которые выполняют стандартные службы. Вы можете использовать Coordinator надзирателя для соединения этих потоков с помощью: sv.coord.Join()
Возможные исключения
RuntimeError Если вызвана с неглавным надзирателем.
ValueError Если в конструктор не был передан параметр logdir, так как службе требуется каталог журналов.

Stop

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

Stop(
    threads=None, close_summary_writer=True, ignore_live_threads=False
)

Остановить службы и координатор.

Это не закрывает сессию.

Аргументы
threads Необязательный список потоков для соединения с координатором. Если None, по умолчанию используется список потоков, выполняющих стандартные службы, потоки, запущенные для QueueRunners, и потоки, запущенные методом loop(). Чтобы дождаться дополнительных потоков, передайте список в этот параметр.
close_summary_writer Нужно ли закрыть summary_writer. По умолчанию True, если SummaryWriter был создан надзирателем, False в противном случае.
ignore_live_threads Если True игнорирует потоки, которые остаются запущенными после периода ожидания при объединении потоков через координатор, вместо повышения RuntimeError.

StopOnException

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

StopOnException()

Обработчик контекста для остановки надзирателя при возникновении исключения.

См. Coordinator.stop_on_exception().

Возвращает
Обработчик контекста.

SummaryComputed

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

SummaryComputed(
    sess, summary, global_step=None
)

Указывает, что сводка была вычислена.

Аргументы
sess Объект Session.
summary Протокол Summary или строка, содержащая сериализованный протокол Summary.
global_step Целое число. Глобальный шаг, с которым связан этот Summary. Если None, будет попытка получить текущий шаг.
Исключения
TypeError если 'summary' не является протоколом Summary или строкой.
RuntimeError если Supervisor был создан без logdir.

WaitForStop

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

WaitForStop()

Ожидание остановки координатора.

loop

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

loop(
    timer_interval_secs, target, args=None, kwargs=None
)

Запуск потока LooperThread, который периодически вызывает функцию.

Если timer_interval_secs равно None, поток вызывает target(*args, **kwargs) многократно. В противном случае он вызывает её каждые timer_interval_secs секунды. Поток завершается при запросе остановки.

Запущенный поток добавляется в список потоков, управляемых Supervisor, поэтому его не нужно передавать методу stop().

Аргументы
timer_interval_secs Числовые значения. Время, по которому необходимо вызывать target.
target Вызываемый объект.
args Дополнительные аргументы для передачи в target при вызове.
kwargs Дополнительные ключевые аргументы для передачи в target при вызове.
Возвращаемое значение
Запущенный поток.

managed_session

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

@contextlib.contextmanager
managed_session(
    master='',
    config=None,
    start_standard_services=True,
    close_summary_writer=True
)

Возвращает менеджер контекста для управляемой сессии.

Этот менеджер контекста создаёт и автоматически восстанавливает сессию. Он необязательно запускает стандартные службы, которые обрабатывают контрольные точки и сводки. Он отслеживает исключения, возникающие в блоке with или в службах, и останавливает Supervisor по мере необходимости.

Менеджер контекста обычно используется следующим образом:

def train():
  sv = tf.compat.v1.train.Supervisor(...)
  with sv.managed_session(<master>) as sess:
    for step in range(..):
      if sv.should_stop():
        break
      sess.run(<my training op>)
      ...do other things needed at each training step...

Исключение, возникшее в блоке with или в одном из потоков служб, снова возникает при выходе из блока. Это делается после остановки всех потоков и закрытия сессии. Например, исключение AbortedError, возникающее в случае прерывания одного из рабочих процессов в распределённой модели, снова возникает при выходе из блока.

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

def main(...):
  while True
    try:
      train()
    except tf.errors.Aborted:
      pass

В качестве специального случая исключения, используемые для управления потоком, например, OutOfRangeError, которые сообщают о том, что очереди ввода исчерпаны, не возникают снова из блока with: они указывают на чистое завершение цикла обучения и считаются нормальным завершением.

Аргументы
master Имя TensorFlow-мастера для использования. Обратитесь к конструктору tf.compat.v1.Session для получения информации о том, как это интерпретируется.
config Необязательный протокол ConfigProto используется для настройки сессии. Передаётся непосредственно для создания сессии.
start_standard_services Нужно ли запускать стандартные службы, такие как контрольные точки, сводки и счётчик шагов.
close_summary_writer Нужно ли закрывать записи сводок при закрытии сессии. По умолчанию True.
Возвращаемое значение
Менеджер контекста, который возвращает Session восстановленный из последней контрольной точки или инициализированный с нуля, если контрольной точки не существует. Сессия закрывается при выходе из блока with.

prepare_or_wait_for_session

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

prepare_or_wait_for_session(
    master='',
    config=None,
    wait_for_checkpoint=False,
    max_wait_secs=7200,
    start_standard_services=True
)

Убедитесь, что модель готова к использованию.

Создайте сессию на 'master', восстанавливая или инициализируя модель по мере необходимости, или подождите, пока сессия не будет готова. Если выполняется как главный и start_standard_service установлено в True, также вызовите менеджер сессии для запуска стандартных служб.

Аргументы
master Имя TensorFlow-мастера для использования. Обратитесь к конструктору tf.compat.v1.Session для получения информации о том, как это интерпретируется.
config Необязательный протокол ConfigProto для настройки сессии, который передаётся напрямую при создании сессии.
wait_for_checkpoint Нужно ли ожидать наличия контрольной точки перед созданием Session. По умолчанию False.
max_wait_secs Максимальное время ожидания доступности сессии.
start_standard_services Нужно ли запускать стандартные службы и исполнители очередей.
Возвращаемое значение
Объект Session, который можно использовать для управления моделью.

request_stop

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

request_stop(
    ex=None
)

Запрос на остановку потоков координатором.

См. Coordinator.request_stop().

Аргументы
ex Необязательный объект Exception, или кортеж Python exc_info, как возвращается sys.exc_info(). Если это первый вызов request_stop(), соответствующее исключение записывается и повторно возникает из join().

should_stop

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

should_stop()

Проверка, запросил ли координатор остановку.

См. Coordinator.should_stop().

Возвращаемое значение
True, если координатор запросил остановку, False в противном случае.

start_queue_runners

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

start_queue_runners(
    sess, queue_runners=None
)

Запуск потоков для QueueRunners.

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

Аргументы
sess Объект Session.
queue_runners Список QueueRunners. Если не указан, мы будем использовать список исполнителей очередей, собранных в графе под ключом GraphKeys.QUEUE_RUNNERS.
Возвращаемое значение
Список потоков, запущенных для QueueRunners.
Исключения
RuntimeError Если вызывается с включённым выполнением eager.

совместимость с eager

Очереди не совместимы с выполнением eager. Для приема данных при включенном выполнении eager используйте API tf.data.

start_standard_services

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

start_standard_services(
    sess
)

Запуск стандартных служб для 'sess'.

Это запускает службы в фоновом режиме. Запускаемые службы зависят от параметров конструктора и могут включать:

  • Поток Summary, вычисляющий сводки каждые save_summaries_secs.
  • Поток Checkpoint, сохраняющий модель каждые save_model_secs.
  • Поток StepCounter, измеряющий время шага.
Аргументы
sess Сессия.
Возвращаемое значение
Список потоков, выполняющих стандартные службы. Вы можете использовать координатор Supervisor для соединения этих потоков: sv.coord.Join(<список="" потоков="">)
Исключения
RuntimeError Если вызывается с Supervisor, который не является главным.
ValueError Если не был передан logdir, так как служба требует каталог журнала.

stop

Просмотр исходного кода

stop(
    threads=None, close_summary_writer=True, ignore_live_threads=False
)

Останавливает сервисы и координатор.

Это не закрывает сессию.

Аргументы
threads Необязательный список потоков, которые нужно присоединить к координатору. Если None, по умолчанию используются потоки, выполняющие стандартные сервисы, потоки, запущенные для QueueRunners, и потоки, запущенные методом loop(). Чтобы подождать дополнительные потоки, передайте список в этом параметре.
close_summary_writer Нужно ли закрывать summary_writer. По умолчанию True, если запись суммарных данных была создана супервайзером, False в противном случае.
ignore_live_threads Если True игнорирует потоки, которые остаются запущенными после периода ожидания при присоединении потоков через координатор, вместо вызова RuntimeError.

stop_on_exception

Просмотр исходного кода

stop_on_exception()

Обработчик контекста для остановки супервайзера при возникновении исключения.

См. Coordinator.stop_on_exception().

Возвращаемые значения
Обработчик контекста.

summary_computed

Просмотр исходного кода

summary_computed(
    sess, summary, global_step=None
)

Указывает, что была вычислена сводка.

Аргументы
sess Объект Session.
summary Протокол Summary или строка, содержащая сериализованный протокол Summary.
global_step Целое число. Глобальный шаг, с которым связана данная сводка. Если None, он попытается получить текущий шаг.
Исключения
TypeError если 'summary' не является протоколом Summary или строкой.
RuntimeError если супервайзер был создан без logdir.

wait_for_stop

Просмотр исходного кода

wait_for_stop()

Ожидание остановки координатора.

Переменные класса
USE_DEFAULT 0

© 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/versions/r2.9/api_docs/python/tf/compat/v1/train/Supervisor

Spec-Zone.ru

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