tf.queue.FIFOQueue
| Просмотр исходного кода на GitHub |
Реализация очереди, которая извлекает элементы в порядке очереди «первым вошел — первым вышел».
Наследуется от: QueueBase
tf.queue.FIFOQueue(
capacity, dtypes, shapes=None, names=None, shared_name=None,
name='fifo_queue'
)
См. tf.queue.QueueBase для описания методов этого класса.
| Аргументы | |
|---|---|
capacity | Целое число. Максимальное количество элементов, которые могут храниться в этой очереди. |
dtypes | Список объектов DType. Длина dtypes должна быть равна количеству тензоров в каждом элементе очереди. |
shapes | (Необязательно.) Список полностью определённых объектов TensorShape с той же длиной, что и dtypes, или None. |
names | (Необязательно.) Список имён компонентов в очереди с той же длиной, что и dtypes, или None. Если указано, методы dequeue возвращают словарь с именами в качестве ключей. |
shared_name | (Необязательно.) Если не пусто, эта очередь будет разделена под данным именем между несколькими сессиями. |
name | Необязательное имя операции очереди. |
| Атрибуты | |
|---|---|
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
)
Вставляет ноль или более элементов в эту очередь.
Эта операция разделяет каждый компонентный тензор по 0-й размерности, чтобы создать несколько элементов очереди. Все тензоры в vals должны иметь одинаковый размер по 0-й размерности.
Если очередь заполнена во время выполнения этой операции, она будет заблокирована до тех пор, пока все элементы не будут вставлены.
Во время выполнения эта операция может вызвать ошибку, если очередь 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/FIFOQueue