tf.queue.PriorityQueue
Реализация очереди, которая извлекает элементы в порядке приоритета.
Наследуется от: QueueBase
tf.queue.PriorityQueue(
capacity,
types,
shapes=None,
names=None,
shared_name=None,
name='priority_queue'
)
См. tf.queue.QueueBase для описания методов этого класса.
| Аргументы | |
|---|---|
capacity | Целое число. Максимальное количество элементов, которое может храниться в этой очереди. |
types | Список объектов DType. Длина types должна быть равна количеству тензоров в каждом элементе очереди, за исключением первого элемента приоритета. Первый тензор в каждом элементе — это приоритет, который должен быть типа int64. |
shapes | (Необязательно.) Список полностью определенных объектов TensorShape, с такой же длиной, как у types, или None. |
names | (Необязательно.) Список строк, именованных компонентами в очереди, с такой же длиной, как у dtypes, или None. Если указано, методы извлечения возвращают словарь с именами в качестве ключей. |
shared_name | (Необязательно.) Если не пусто, эта очередь будет использоваться совместно под указанным именем в нескольких сессиях. |
name | Необязательное имя операции очереди. |
| Атрибуты | |
|---|---|
dtypes | Список типов данных для каждого компонента элемента очереди. |
name | Имя базовой очереди. |
names | Список имен для каждого компонента элемента очереди. |
queue_ref | Ссылка на базовую очередь. |
shapes | Список форм для каждого компонента элемента очереди. |
Методы
close
close(
cancel_pending_enqueues=False, name=None
)
Закрывает эту очередь.
Эта операция сигнализирует о том, что больше элементов не будут помещены в заданную очередь. Последующие операции enqueue и enqueue_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 | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
| Скалярный тензор, содержащий количество элементов в очереди. |
© 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/PriorityQueue