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 будут продолжать выполняться успешно, если в очереди останется достаточно элементов. После этого операции извлечения и извлечения большого числа элементов, которые в противном случае блокировались бы в ожидании большего количества элементов (если 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.3/api_docs/python/tf/queue/QueueBase