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
)
Миграция на TF2
QueueRunner несовместимы с eager execution. Вместо этого используйте tf.data для передачи данных в модель.
Описание
Очереди — это удобный механизм TensorFlow для асинхронных вычислений тензоров с использованием нескольких потоков. Например, в типичной конфигурации «читателя входных данных» один набор потоков помещает имена файлов в очередь; второй набор потоков считывает записи из файлов, обрабатывает их и помещает тензоры во вторую очередь; третий набор потоков извлекает эти входные записи, формирует пакеты и передает их операциям обучения.
При работе нескольких потоков таким образом возникают некоторые тонкости: очереди нужно закрывать по порядку по мере исчерпания входных данных, правильно перехватывать исключения и сообщать о них и т. д.
QueueRunner вместе с Coordinator помогают справиться с этими проблемами.
| Аргументы | |
|---|---|
queue | A 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 execution. |
| Атрибуты | |
|---|---|
cancel_op | |
close_op | |
enqueue_ops | |
exceptions_raised | Исключения, возникшие в потоках 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 не находится в указанной области имен. |
© 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/api_docs/python/tf/compat/v1/train/QueueRunner