tf.TensorArray
| Просмотреть исходный код на GitHub |
Класс, оборачивающий динамические, пошаговые, одноразовые массивы тензоров.
tf.TensorArray(
dtype, size=None, dynamic_size=None, clear_after_read=None,
tensor_array_name=None, handle=None, flow=None, infer_shape=True,
element_shape=None, colocate_with_first_write_call=True, name=None
)
Этот класс предназначен для использования с динамическими итерационными примитивами, такими как while_loop и map_fn. Он поддерживает обратное распространение градиента с помощью специальных зависимостей управления потоком «flow».
| Аргументы | |
|---|---|
dtype | (обязательно) тип данных массива тензоров. |
size | (необязательно) скаляр int32 Tensor: размер массива тензоров. Требуется, если handle не предоставлен. |
dynamic_size | (необязательно) булево значение Python: если True, записи в массив тензоров могут увеличивать его размер за пределы начального размера. По умолчанию: False. |
clear_after_read | Булево (необязательно, по умолчанию: True). Если True, значения массива тензоров очищаются после их чтения. Это отключает семантику чтения многих значений, но позволяет раньше освободить память. |
tensor_array_name | (необязательно) строка Python: имя массива тензоров. Используется при создании дескриптора массива тензоров. Если это значение задано, handle должен быть None. |
handle | (необязательно) дескриптор Tensor существующего массива тензоров. Если это значение задано, tensor_array_name должно быть None. Поддерживается только в режиме графа. |
flow | (необязательно) скаляр с плавающей точкой Tensor, полученный из существующего TensorArray.flow. Поддерживается только в режиме графа. |
infer_shape | (необязательно, по умолчанию: True) Если True, включена проверка формы. В этом случае все элементы должны иметь одинаковую форму. |
element_shape | (необязательно, по умолчанию: None) Объект TensorShape, определяющий ограничения формы каждого элемента массива тензоров. Необязательно полностью определять. |
colocate_with_first_write_call | Если True, массив тензоров будет совмещен на одном устройстве с тензором, используемым при первой записи (операции записи включают write, unstack, и split). Если False, массив тензоров будет размещен на устройстве, определяемом контекстом устройства, доступным во время его инициализации. |
name | Имя операции (необязательно). |
| Возбуждает | |
|---|---|
ValueError | если handle и tensor_array_name заданы одновременно. |
TypeError | если handle указан, но не является тензором. |
| Атрибуты | |
|---|---|
dtype | Тип данных этого массива тензоров. |
dynamic_size | Булево значение Python; если True массив тензоров может динамически увеличиваться. |
element_shape | tf.TensorShape элементов в этом массиве тензоров. |
flow | Поток Tensor, принуждающий операции, ведущие к этому состоянию массива тензоров. |
handle | Ссылка на массив тензоров. |
Методы
close
close(
name=None
)
Закрыть текущий массив тензоров.
Примечание: Результат этой функции должен быть использован. Если это не так, будет выведено предупреждение. Чтобы отметить результат как использованный, вызовите метод .mark_used().
concat
concat(
name=None
)
Возвращает значения в массиве тензоров как конкатенированный Tensor.
Все значения должны быть записаны, их ранги должны совпадать, а их формы должны совпадать для всех измерений, кроме первого.
| Аргументы | |
|---|---|
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
| Все тензоры в массиве тензоров, конкатенированные в один тензор. |
gather
gather(
indices, name=None
)
Возвращает выбранные значения в массиве тензоров как упакованный Tensor.
Все выбранные значения должны быть записаны, и их формы должны совпадать.
| Аргументы | |
|---|---|
indices | 1-D Tensor принимающий значения в [0, max_value). Если TensorArray не динамичен, max_value=size(). |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
Тензоры в массиве TensorArray выбранные по indices, упакованные в один тензор. |
grad
grad(
source, flow=None, name=None
)
identity
identity()
Возвращает массив тензоров с тем же содержимым и свойствами.
| Возвращает | |
|---|---|
| Новый объект массива тензоров с потоком, который гарантирует, что зависимости управления из контекстов станут зависимостями управления для записей, чтений и т. д. Используйте этот объект для всех последующих операций. |
read
read(
index, name=None
)
Прочитать значение в позиции index в массиве тензоров.
| Аргументы | |
|---|---|
index | 0-D. int32 тензор с индексом для чтения. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
Тензор по индексу index. |
scatter
scatter(
indices, value, name=None
)
Разбросать значения Tensor по определенным индексам TensorArray.
Аргументы: индексы: 1-D Tensor принимающий значения в [0, max_value). Если TensorArray не динамичен, max_value=size(). значение: (N+1)-D. Тензор типа dtype. Тензор для распаковки. имя: имя операции (необязательно).
Возвращает: новый объект массива тензоров с потоком, гарантирующим выполнение разброса. Используйте этот объект для всех последующих операций.
Возбуждает: ValueError: если проверка формы завершается неудачно.
Примечание: Результат этой функции должен быть использован. Если это не так, будет выведено предупреждение. Чтобы отметить результат как использованный, вызовите метод .mark_used().
size
size(
name=None
)
Возвращает размер массива тензоров.
split
split(
value, lengths, name=None
)
Разделить значения Tensor в массив тензоров.
Аргументы: значение: (N+1)-D. Тензор типа dtype. Тензор для разделения. длины: 1-D. Вектор int32 с длинами, используемыми при разделении value по первому измерению. имя: имя операции (необязательно).
Возвращает: новый объект массива тензоров с потоком, гарантирующим выполнение разделения. Используйте этот объект для всех последующих операций.
Возбуждает: ValueError: если проверка формы завершается неудачно.
Примечание: Результат этой функции должен быть использован. Если это не так, будет выведено предупреждение. Чтобы отметить результат как использованный, вызовите метод .mark_used().
stack
stack(
name=None
)
Возвращает значения в массиве тензоров как составленный Tensor.
Все значения должны быть записаны, и их формы должны совпадать. Если формы входных данных имеют ранг-R, то форма выходных данных будет иметь ранг-(R+1).
| Аргументы | |
|---|---|
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
| Все тензоры в TensorArray, объединённые в один тензор. |
unstack
unstack(
value, name=None
)
Разделить значения Tensor в TensorArray.
Если формы входных значений имеют ранг-R, то выходной TensorArray будет содержать элементы с формами ранга-(R-1).
Аргументы: value: (N+1)-мерный. Тензор типа dtype. Тензор для разделения. name: Имя операции (необязательно).
Возвращаемое значение: новый объект TensorArray с потоком, который гарантирует выполнение операции разделения. Используйте этот объект для последующих операций.
Возможные исключения: ValueError: если проверка формы не удалась.
Примечание: Выходные данные этой функции должны быть использованы. Если это не так, будет выведено предупреждение. Чтобы отметить выходные данные как используемые, вызовите метод .mark_used().
write
write(
index, value, name=None
)
Записать value в индекс index TensorArray.
| Аргументы | |
|---|---|
index | 0-мерный. Скаляр int32 с индексом для записи. |
value | N-мерный. Тензор типа dtype. Тензор для записи в этот индекс. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
| Новый объект TensorArray с потоком, который гарантирует выполнение записи. Используйте этот объект для последующих операций. |
| Возможные исключения | |
|---|---|
ValueError | если записывающих задач больше, чем указано. |
© 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/r1.15/api_docs/python/tf/TensorArray