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 xrange(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 | Строковый тензор 1-мерного типа. Этот тензор оценивается supervisor в prepare_or_wait_for_session() для проверки готовности модели к использованию. Модель считается готовой, если она возвращает пустой массив. По умолчанию — тензор, возвращаемый из tf.compat.v1.report_uninitialized_variables() Если None, готовность модели не проверяется. |
ready_for_local_init_op | Строковый тензор 1-мерного типа. Этот тензор оценивается supervisor в prepare_or_wait_for_session() для проверки готовности модели к запуску local_init_op. Модель считается готовой, если она возвращает пустой массив. По умолчанию — None. Если None, готовность модели перед запуском local_init_op не проверяется. |
is_chief | Если True, создаёт главного supervisor, ответственного за инициализацию и восстановление модели. Если False, создаёт supervisor, который полагается на главного supervisor для инициализации и восстановления. |
init_op | Функция инициализации. Используется главными supervisor для инициализации модели, когда её нельзя восстановить. По умолчанию — функция, которая инициализирует все глобальные переменные. Если None, автоматическая инициализация не выполняется, если не указано значение для init_fn, см. ниже. |
init_feed_dict | Словарь, который сопоставляет объекты Tensor с значениями feed. Этот словарь feed будет использоваться при оценке init_op |
local_init_op | Функция инициализации. Используется всеми 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 | Управляющий сессиями. Если это 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 | Возвращает словарь feed, используемый при оценке 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 мастер-узла для использования. Обратитесь к конструктору tf.compat.v1.Session для получения информации о том, как это интерпретируется. |
config | Необязательный ConfigProto протокол для настройки сеанса, который передается как есть для создания сеанса. |
wait_for_checkpoint | Нужно ли ждать наличия контрольной точки перед созданием сеанса. По умолчанию False. |
max_wait_secs | Максимальное время ожидания готовности сеанса. |
start_standard_services | Нужно ли запускать стандартные сервисы и запуск очередей. |
| Возвращает | |
|---|---|
| Объект Session, который можно использовать для управления моделью. |
RequestStop
RequestStop(
ex=None
)
Запросить остановку потоков координатором.
См. Coordinator.request_stop().
| Аргументы | |
|---|---|
ex | Необязательный Exception, или кортеж Python exc_info, как возвращается sys.exc_info(). Если это первый вызов request_stop(), соответствующее исключение записывается и повторно генерируется из join(). |
ShouldStop
ShouldStop()
Проверить, было ли сказано координатору остановиться.
См. Coordinator.should_stop().
| Возвращает | |
|---|---|
| True, если координатору было сказано остановиться, иначе False. |
StartQueueRunners
StartQueueRunners(
sess, queue_runners=None
)
Запустить потоки для QueueRunners.
Обратите внимание, что потоки очереди, собранные в ключе графа QUEUE_RUNNERS, уже автоматически запускаются при создании сеанса с надзирателем, поэтому, если у вас нет потоков очереди, которые нужно запустить, нет необходимости вызывать это явно.
| Аргументы | |
|---|---|
sess | Session. |
queue_runners | Список QueueRunners. Если не указано, мы будем использовать список потоков очереди, собранных в графе по ключу GraphKeys.QUEUE_RUNNERS. |
| Возвращает | |
|---|---|
Список потоков, запущенных для QueueRunners . |
| Возможные исключения | |
|---|---|
RuntimeError | Если вызов сделан с включенным выполнением eager. |
Совместимость с Eager
Очереди несовместимы с выполнением eager. Для загрузки данных при включенном выполнении eager используйте API tf.data.
StartStandardServices
StartStandardServices(
sess
)
Запустить стандартные службы для 'sess'.
Это запускает службы в фоновом режиме. Запускаемые службы зависят от параметров конструктора и могут включать:
- Поток Summary, вычисляющий сводки каждые save_summaries_secs.
- Поток Checkpoint, сохраняющий модель каждые save_model_secs.
- Поток StepCounter для измерения времени шага.
| Аргументы | |
|---|---|
sess | Сеанс. |
| Возвращает | |
|---|---|
| Список потоков, выполняющих стандартные службы. Вы можете использовать координатор надзирателя для объединения этих потоков: 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, если записыватель сводок был создан надзирателем, 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 | Целое число. Глобальный шаг, с которым связана эта сводка. Если 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 xrange(..):
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, используемый для настройки сессии. Передаётся в create как есть. |
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, используемый для настройки сессии. Передаётся в create как есть. |
wait_for_checkpoint | Нужно ли ждать доступности контрольной точки перед созданием Session. По умолчанию False. |
max_wait_secs | Максимальное время ожидания готовности сессии. |
start_standard_services | Нужно ли запускать стандартные службы и запуски очередей. |
| Возвращаемое значение | |
|---|---|
| Объект Session, который может использоваться для управления моделью. |
request_stop
request_stop(
ex=None
)
Запросить остановку потоков координатором.
См. Coordinator.request_stop().
| Аргументы | |
|---|---|
ex | Необязательное исключение или кортеж Python, возвращённый 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, если запись суммарных данных создана руководителем (Supervisor), False в противном случае. |
ignore_live_threads | Если True игнорирует потоки, которые остаются запущенными после периода ожидания при присоединении потоков через координатор, вместо того чтобы поднимать исключение RuntimeError. |
stop_on_exception
stop_on_exception()
Обработчик контекста для остановки руководителя (Supervisor) при возникновении исключения.
См. 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 | если Supervisor был создан без logdir . |
wait_for_stop
wait_for_stop()
Ожидание остановки координатора.
| Переменные класса | |
|---|---|
| USE_DEFAULT | 0 |
© 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/compat/v1/train/Supervisor