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 элементов из этой очереди.
Эта операция объединяет тензоры компонентов элемента очереди по нулевому измерению, чтобы создать один тензор компонента. Все компоненты в извлечённом кортеже будут иметь размер n в нулевом измерении.
Если очередь закрыта и осталось меньше 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.
Эта операция объединяет тензоры компонентов элемента очереди по нулевому измерению, чтобы создать один тензор компонента. Если очередь не закрыта, все компоненты в извлечённом кортеже будут иметь размер n в нулевом измерении.
Если очередь закрыта и в ней осталось больше 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/versions/r2.9/api_docs/python/tf/queue/QueueBase