tf.train.Supervisor
Помощник обучения, который сохраняет контрольные точки моделей и вычисляет сводки.
tf.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:
Указание
''запрашивает сессию в процессе, которая не использует удалённый вызов процедур.Указание
'local'запрашивает сессию, которая использует «Интерфейс мастера» на основе удалённого вызова процедур для запуска программ TensorFlow. См.tf.train.Server.create_local_serverдля получения дополнительных сведений.Указание
'grpc://hostname:port'запрашивает сессию, которая использует интерфейс удалённого вызова процедур для конкретного узла и также позволяет мастеру в процессе доступа к удалённым рабочим 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" и "checkpoint", которые используют необязательные 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-мерный тензор. Этот тензор оценивается Supervisors в prepare_or_wait_for_session() для проверки готовности модели к использованию. Модель считается готовой, если возвращает пустой массив. По умолчанию используется тензор, возвращаемый из tf.compat.v1.report_uninitialized_variables(). Если None, готовность модели не проверяется. |
ready_for_local_init_op | Строковый 1-мерный тензор. Этот тензор оценивается Supervisors в 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(), возвращаемый объектом 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, будет создан Supervisor по умолчанию со значениями параметров, переданными для обратной совместимости. |
summary_writer | Интерфейс для написания сводок или USE_DEFAULT. Может быть None для указания того, что сводки не должны записываться. |
init_fn | Необязательная функция, используемая для инициализации модели. Вызывается после вызова необязательной init_op. Функция должна принимать один аргумент — инициализируемую сессию. |
local_init_run_options | RunOptions, передаваемые в качестве параметра local_init_run_options SessionManager. |
| Возбуждает | |
|---|---|
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 при вызове. |
target | Дополнительные ключевые аргументы для передачи методу 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 для настройки сессии, который передаётся как есть для создания сессии. |
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 execution. |
Совместимость с eager execution
Очереди несовместимы с eager execution. Для ввода данных при включённом режиме eager execution используйте API tf.data.
StartStandardServices
StartStandardServices(
sess
)
Запустить стандартные сервисы для 'sess'.
Это запускает сервисы в фоновом режиме. Запускаемые сервисы зависят от параметров конструктора и могут включать:
- Поток сводок, вычисляющий сводки каждые save_summaries_secs.
- Поток контрольных точек, сохраняющий модель каждые save_model_secs.
- Поток счётчика шагов, измеряющий время выполнения шага.
| Аргументы | |
|---|---|
sess | Сессия. |
| Возвращает | |
|---|---|
Список потоков, выполняющих стандартные сервисы. Вы можете использовать координатор надзирателя для объединения этих потоков: sv.coord.Join(
|
| Возможные исключения | |
|---|---|
RuntimeError | Если вызвана для неглавного надзирателя. |
ValueError | Если каталога журналов не было передано в конструктор, так как сервисы требуют каталог журнала. |
Stop
Stop(
threads=None, close_summary_writer=True, ignore_live_threads=False
)
Остановить сервисы и координатор.
Это не закрывает сессию.
| Аргументы | |
|---|---|
threads | Необязательный список потоков для объединения с координатором. Если None, по умолчанию используется потоки, выполняющие стандартные сервисы, потоки, запущенные для QueueRunners, и потоки, запущенные методом loop(). Чтобы дождаться дополнительных потоков, передайте список в этом параметре. |
close_summary_writer | Нужно ли закрывать summary_writer. По умолчанию True если writer сводок был создан надзирателем, False в противном случае. |
ignore_live_threads | Если True игнорирует потоки, которые остаются активными после периода ожидания при объединении потоков через координатор, вместо повышения RuntimeError. |
StopOnException
StopOnException()
Обработчик контекста для остановки надзирателя при возникновении исключения.
См. Coordinator.stop_on_exception().
| Возвращает | |
|---|---|
| Обработчик контекста. |
SummaryComputed
SummaryComputed(
sess, summary, global_step=None
)
Указывает, что сводка была вычислена.
| Аргументы | |
|---|---|
sess | Объект Session. |
summary | Протокол сводки или строка, содержащая сериализованный протокол сводки. |
global_step | Целое число. Глобальный шаг, с которым связана данная сводка. Если None, он попытается получить текущий шаг. |
| Исключения | |
|---|---|
TypeError | если '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 для настройки сессии. Передаётся без изменений при создании сессии. |
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_session без изменений. |
wait_for_checkpoint | Нужно ли ждать наличия контрольной точки перед созданием сессии. По умолчанию 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'.
Это запускает службы в фоновом режиме. Запущенные службы зависят от параметров конструктора и могут включать:
- Поток сводки, вычисляющий сводки каждые save_summaries_secs.
- Поток контрольной точки, сохраняющий модель каждые save_model_secs.
- Поток StepCounter, измеряющий время шага.
| Аргументы | |
|---|---|
sess | Сессия. |
| Возвращает | |
|---|---|
| Список потоков, которые выполняют стандартные службы. Вы можете использовать Coordinator 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
© 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/train/Supervisor