tf.queue.QueueBase
| Просмотреть исходный код на GitHub |
Базовый класс для реализации очередей.
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, которые в противном случае блокировались бы, ожидая дополнительных элементов (если close не был вызван), теперь завершатся ошибкой немедленно.
Если 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
)
Вставляет в эту очередь ноль или более элементов.
Эта операция разрезает каждый компонентный тензор по размеру нулевого измерения, чтобы создать несколько элементов очереди. Все тензоры в vals должны иметь одинаковый размер в нулевом измерении.
Если очередь заполнена, когда выполняется эта операция, она будет блокироваться, пока все элементы не будут помещены в очередь.
Во время выполнения эта операция может вызвать ошибку, если очередь tf.QueueBase.close до или во время её выполнения. Если очередь закрыта до запуска этой операции, будет поднята tf.errors.CancelledError. Если эта операция заблокирована, и либо (i) очередь закрыта операцией закрытия с 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 | Имя операции (необязательно). |
| Возвращает | |
|---|---|
| Скалярный тензор, содержащий количество элементов в этой очереди. |
© 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/queue/QueueBase