tf.queue.QueueBase
Базовый класс для реализаций очередей.
tf.queue.QueueBase(
dtypes, shapes, names, queue_ref
)
Очередь — это структура данных TensorFlow, которая хранит тензоры на протяжении нескольких шагов и предоставляет операции для добавления тензоров в очередь и извлечения их из нее.
Каждый элемент очереди представляет собой кортеж из одного или нескольких тензоров, причем для каждого компонента кортежа задан статический тип данных и может быть задана статическая форма. Реализации очередей поддерживают версии операций добавления и извлечения для отдельных элементов, а также версии, позволяющие добавлять и извлекать пакет элементов за один раз.
Конкретные реализации этого класса и инструкции по их созданию см. в разделах tf.queue.FIFOQueue и tf.queue.RandomShuffleQueue.
| Аргументы | |
|---|---|
dtypes | Список типов. Длина dtypes должна равняться числу тензоров в каждом элементе. |
shapes | Ограничения на формы тензоров в элементе: список кортежей форм или None. Длина этого списка должна совпадать с длиной dtypes. Если форма какого-либо тензора в элементе ограничена, ограничения должны быть заданы для всех тензоров; для форм можно указать None, если их не следует ограничивать. |
names | Необязательный список имен. Если он указан, методы enqueue() и dequeue() будут использовать словари с этими именами в качестве ключей. Должно быть указано None, список или кортеж той же длины, что и dtypes. |
queue_ref | Ссылка на очередь, то есть выход операции очереди. |
| Исключения | |
|---|---|
ValueError | Если один из аргументов недопустим. |
| Атрибуты | |
|---|---|
dtypes | Список типов данных для каждого компонента элемента очереди. |
name | Имя базовой очереди. |
names | Список имен для каждого компонента элемента очереди. |
queue_ref | Ссылка на базовую очередь. |
shapes | Список форм для каждого компонента элемента очереди. |
Методы
close
close(
cancel_pending_enqueues=False, name=None
)
Закрывает эту очередь.
Эта операция сигнализирует о том, что в указанную очередь больше нельзя добавлять элементы. Последующие операции enqueue и enqueue_many завершатся ошибкой. Последующие операции dequeue и dequeue_many будут выполняться успешно, если в очереди останется достаточно элементов. После этого операции dequeue и dequeue_many, которые в противном случае блокировались бы в ожидании новых элементов (если бы очередь не была закрыта), немедленно завершатся ошибкой.
Если cancel_pending_enqueues имеет значение True, все ожидающие запросы также будут отменены.
| Аргументы | |
|---|---|
cancel_pending_enqueues | (Необязательно.) Логическое значение, по умолчанию равное False (описано выше). |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
| Операцию, которая закрывает очередь. |
dequeue
dequeue(
name=None
)
Извлекает из этой очереди один элемент.
Если в момент выполнения этой операции очередь пуста, выполнение будет заблокировано до появления элемента для извлечения.
Во время выполнения эта операция может вызвать ошибку, если очередь tf.QueueBase.close до начала или в процессе ее выполнения. Если очередь закрыта и пуста, а также нет ожидающих операций добавления, которые могли бы выполнить этот запрос, будет вызвана ошибка tf.errors.OutOfRangeError. Если сеанс tf.Session.close, будет вызвана ошибка tf.errors.CancelledError.
| Аргументы | |
|---|---|
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
| Кортеж извлеченных тензоров. |
dequeue_many
dequeue_many(
n, name=None
)
Извлекает из этой очереди n элементов и объединяет их.
Эта операция объединяет тензоры-компоненты элементов очереди вдоль измерения 0, формируя один тензор-компонент. Все компоненты в извлеченном кортеже будут иметь размер n по измерению 0.
Если очередь закрыта и в ней осталось меньше n элементов, будет вызвано исключение OutOfRange.
Во время выполнения эта операция может вызвать ошибку, если очередь tf.QueueBase.close до начала или в процессе ее выполнения. Если очередь закрыта, в ней содержится меньше n элементов и нет ожидающих операций добавления, которые могли бы выполнить этот запрос, будет вызвана ошибка tf.errors.OutOfRangeError. Если сеанс tf.Session.close, будет вызвана ошибка tf.errors.CancelledError.
| Аргументы | |
|---|---|
n | Скалярный тензор Tensor, содержащий количество извлекаемых элементов. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
| Список объединенных извлеченных тензоров. |
dequeue_up_to
dequeue_up_to(
n, name=None
)
Извлекает из этой очереди n элементов и объединяет их.
Примечание: Эта операция поддерживается не всеми очередями. Если очередь не поддерживает DequeueUpTo, вызывается исключение tf.errors.UnimplementedError.
Эта операция объединяет тензоры-компоненты элементов очереди вдоль измерения 0, формируя один тензор-компонент. Если очередь не закрыта, все компоненты в извлеченном кортеже будут иметь размер n по измерению 0.
Если очередь закрыта и в ней осталось больше 0, но меньше n элементов, вместо вызова tf.errors.OutOfRangeError, как в случае с tf.QueueBase.dequeue_many, немедленно возвращается меньше n элементов. Если очередь закрыта и в ней осталось 0 элементов, вызывается tf.errors.OutOfRangeError, как и в случае с dequeue_many. В остальных случаях поведение идентично dequeue_many.
| Аргументы | |
|---|---|
n | Скалярный тензор Tensor, содержащий количество извлекаемых элементов. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
| Кортеж объединенных извлеченных тензоров. |
enqueue
enqueue(
vals, name=None
)
Добавляет один элемент в эту очередь.
Если в момент выполнения этой операции очередь заполнена, выполнение будет заблокировано до добавления элемента.
Во время выполнения эта операция может вызвать ошибку, если очередь tf.QueueBase.close до начала или в процессе ее выполнения. Если очередь закрыта до запуска этой операции, будет вызвана ошибка tf.errors.CancelledError. Если операция заблокирована и (i) очередь закрыта операцией close с параметром cancel_pending_enqueues=True или (ii) сеанс tf.Session.close, будет вызвана ошибка tf.errors.CancelledError.
| Аргументы | |
|---|---|
vals | Тензор, список или кортеж тензоров либо словарь со значениями для добавления в очередь. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
| Операцию, которая добавляет в очередь новый кортеж тензоров. |
enqueue_many
enqueue_many(
vals, name=None
)
Добавляет в эту очередь ноль или более элементов.
Эта операция разделяет каждый тензор-компонент вдоль измерения 0, чтобы сформировать несколько элементов очереди. Все тензоры в vals должны иметь одинаковый размер по измерению 0.
Если в момент выполнения этой операции очередь заполнена, выполнение будет заблокировано до добавления всех элементов.
Во время выполнения эта операция может вызвать ошибку, если очередь tf.QueueBase.close до начала или в процессе ее выполнения. Если очередь закрыта до запуска этой операции, будет вызвана ошибка tf.errors.CancelledError. Если операция заблокирована и (i) очередь закрыта операцией close с параметром cancel_pending_enqueues=True или (ii) сеанс tf.Session.close, будет вызвана ошибка tf.errors.CancelledError.
| Аргументы | |
|---|---|
vals | Тензор, список или кортеж тензоров либо словарь, из которого берутся элементы очереди. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
| Операцию, которая добавляет в очередь пакет кортежей тензоров. |
from_list
@staticmethod
from_list(
index, queues
)
Создает очередь с использованием ссылки на очередь из queues[index].
| Аргументы | |
|---|---|
index | Скалярный целочисленный тензор, определяющий выбираемый вход. |
queues | Список объектов QueueBase. |
| Возвращает | |
|---|---|
Объект QueueBase. |
| Исключения | |
|---|---|
TypeError | Если queues не является списком объектов QueueBase или если типы данных элементов queues различаются. |
is_closed
is_closed(
name=None
)
Возвращает true, если очередь закрыта.
Эта операция возвращает true, если очередь закрыта, и false, если она открыта.
| Аргументы | |
|---|---|
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
| True, если очередь закрыта, и false, если она открыта. |
size
size(
name=None
)
Вычисляет количество элементов в этой очереди.
| Аргументы | |
|---|---|
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
| Скалярный тензор, содержащий количество элементов в этой очереди. |
© 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/queue/QueueBase