tf.compat.v1.train.QueueRunner
Содержит список операций добавления в очередь, каждая из которых должна выполняться в отдельном потоке.
tf.compat.v1.train.QueueRunner(
queue=None, enqueue_ops=None, close_op=None, cancel_op=None,
queue_closed_exception_types=None, queue_runner_def=None, import_scope=None
)
Очереди — удобный механизм TensorFlow для асинхронного вычисления тензоров с использованием нескольких потоков. Например, в стандартной схеме «Чтение входных данных» один набор потоков генерирует имена файлов в очереди; второй набор потоков считывает записи из файлов, обрабатывает их и добавляет тензоры в вторую очередь; третий набор потоков извлекает эти входные записи для построения пакетов и запускает их через операции обучения.
При запуске нескольких потоков возникает несколько деликатных проблем: закрытие очередей последовательно по мере исчерпания входных данных, правильное перехват и отчёт об исключениях и т.д.
Класс QueueRunner, в сочетании с Coordinator, помогает решить эти проблемы.
| Аргументы | |
|---|---|
queue | Queue. |
enqueue_ops | Список операций добавления в очередь для последующего выполнения в потоках. |
close_op | Операция закрытия очереди. Ожидаемые операции добавления в очередь сохраняются. |
cancel_op | Операция закрытия очереди и отмены ожидаемых операций добавления в очередь. |
queue_closed_exception_types | Необязательная кортеж типов исключений, которые указывают, что очередь закрыта, когда они возникают во время операции добавления в очередь. По умолчанию (tf.errors.OutOfRangeError,). Другой распространённый случай — (tf.errors.OutOfRangeError, tf.errors.CancelledError), когда некоторые операции добавления в очередь могут извлекать данные из других очередей. |
queue_runner_def | Необязательный QueueRunnerDef протокол. Если указан, пересоздаёт QueueRunner из его содержимого. queue_runner_def и другие аргументы взаимоисключают друг друга. |
import_scope | Необязательный string. Область именования для добавления. Используется только при инициализации из протокола. |
| Возбуждаемые исключения | |
|---|---|
ValueError | Если оба queue_runner_def и queue указаны. |
ValueError | Если queue или enqueue_ops не заданы при отсутствии восстановления из queue_runner_def. |
RuntimeError | Если включено выполнение eager. |
Совместимость с eager
QueueRunner не совместимы с eager-вычислением. Используйте вместо этого tf.data для получения данных в вашей модели.
| Атрибуты | |
|---|---|
cancel_op | |
close_op | |
enqueue_ops | |
exceptions_raised | Исключения, возбуждённые, но не обработанные потоками QueueRunner. Возбуждённые в потоках QueueRunner исключения обрабатываются одним из двух способов в зависимости от того, был ли передан
|
name | Строковое имя базовой очереди. |
queue | |
queue_closed_exception_types | |
Методы
create_threads
create_threads(
sess, coord=None, daemon=False, start=False
)
Создать потоки для выполнения операций добавления в очередь для заданной сессии.
Этот метод требует сессии, в которой была запущена графа. Он создаёт список потоков, необязательно запускает их. Для каждой операции, переданной в enqueue_ops, создаётся по одному потоку.
Аргумент coord — это необязательный координатор, который потоки будут использовать для совместного завершения и отчёта об исключениях. Если координатор задан, этот метод запускает дополнительный поток для закрытия очереди, когда координатор запрашивает остановку.
Если ранее созданные потоки для данной сессии всё ещё работают, новые потоки созданы не будут.
| Аргументы | |
|---|---|
sess | Session. |
coord | Необязательный объект Coordinator для отчёта об ошибках и проверки условий остановки. |
daemon | Булево. Если True сделать потоки демонами. |
start | Булево. Если True запускает потоки. Если False вызывающий должен вызвать метод start() возвращённых потоков. |
| Возвращаемое значение | |
|---|---|
| Список потоков. |
from_proto
@staticmethod
from_proto(
queue_runner_def, import_scope=None
)
Возвращает объект QueueRunner созданный из queue_runner_def.
to_proto
to_proto(
export_scope=None
)
Преобразует этот QueueRunner в QueueRunnerDef протокол.
| Аргументы | |
|---|---|
export_scope | Необязательная string. Область именования для удаления. |
| Возвращаемое значение | |
|---|---|
QueueRunnerDef протокол, или None если Variable не находится в заданной области именования. |
© 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/QueueRunner