Spec-Zone.ru › TensorFlow 2.9

tf.TensorArray

Просмотреть исходный код на GitHub

Класс, оборачивающий динамические, на временной шаг, одноразовые массивы тензоров.

Псевдонимы

Псевдонимы для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.TensorArray

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. Он поддерживает обратное распространение градиента с помощью специальных зависимостей потока управления.

Пример 1: Простое чтение и запись.

ta = tf.TensorArray(tf.float32, size=0, dynamic_size=True, clear_after_read=False)
ta = ta.write(0, 10)
ta = ta.write(1, 20)
ta = ta.write(2, 30)

ta.read(0)
<tf.Tensor: shape=(), dtype=float32, numpy=10.0>
ta.read(1)
<tf.Tensor: shape=(), dtype=float32, numpy=20.0>
ta.read(2)
<tf.Tensor: shape=(), dtype=float32, numpy=30.0>
ta.stack()
<tf.Tensor: shape=(3,), dtype=float32, numpy=array([10., 20., 30.],
dtype=float32)>

Пример 2: Алгоритм последовательности Фибоначчи, который записывает в цикле, а затем возвращает.

@tf.function
def fibonacci(n):
  ta = tf.TensorArray(tf.float32, size=0, dynamic_size=True)
  ta = ta.unstack([0., 1.])

  for i in range(2, n):
    ta = ta.write(i, ta.read(i - 1) + ta.read(i - 2))

  return ta.stack()

fibonacci(7)
<tf.Tensor: shape=(7,), dtype=float32,
numpy=array([0., 1., 1., 2., 3., 5., 8.], dtype=float32)>

Пример 3: Простой цикл, взаимодействующий с tf.Variable.

v = tf.Variable(1)
@tf.function
def f(x):
  ta = tf.TensorArray(tf.int32, size=0, dynamic_size=True)
  for i in tf.range(x):
    v.assign_add(i)
    ta = ta.write(i, v)
  return ta.stack()
f(5)
<tf.Tensor: shape=(5,), dtype=int32, numpy=array([ 1,  2,  4,  7, 11],
dtype=int32)>
Аргументы
dtype (обязательно) тип данных TensorArray.
size (необязательно) скаляр int32 Tensor: размер TensorArray. Требуется, если handle не указан.
dynamic_size (необязательно) Python bool: если True, записи в TensorArray могут увеличить размер TensorArray за пределы его начального значения. По умолчанию: False.
clear_after_read Булево (необязательно, по умолчанию: True). Если True, значения TensorArray очищаются после чтения. Это отключает семантику read-many, но позволяет раньше освободить память.
tensor_array_name (необязательно) строка Python: имя TensorArray. Используется при создании дескриптора TensorArray. Если это значение установлено, handle должен быть None.
handle (необязательно) дескриптор Tensor существующего TensorArray. Если это значение установлено, tensor_array_name должен быть None. Поддерживается только в режиме графа.
flow (необязательно) скаляр с плавающей запятой Tensor из существующего TensorArray.flow. Поддерживается только в режиме графа.
infer_shape (необязательно, по умолчанию: True) Если True, включена проверка формы. В этом случае все элементы должны иметь одинаковую форму.
element_shape (необязательно, по умолчанию: None) Объект TensorShape, определяющий ограничения формы каждого элемента TensorArray. Не обязательно полностью определен.
colocate_with_first_write_call Если True, TensorArray будет размещен на том же устройстве, что и тензор, используемый при первой записи (операции записи включают write, unstack, и split). Если False, TensorArray будет размещен на устройстве, определяемом контекстом устройства, доступным во время его инициализации.
name Имя операции (необязательно).
Возбуждает
ValueError если и handle, и tensor_array_name предоставлены.
TypeError если handle предоставлен, но не является тензором.
Атрибуты
dtype Тип данных этого TensorArray.
dynamic_size Python bool; если True TensorArray может динамически увеличиваться.
element_shape tf.TensorShape элементов в этом TensorArray.
flow Поток Tensor, принуждающий операции, ведущие к этому состоянию TensorArray.
handle Ссылка на TensorArray.

Методы

close

Просмотреть исходный код

close(
    name=None
)

Закрыть текущий TensorArray.

Примечание: Должно быть использовано значение, возвращаемое этой функцией. Если это не так, будет выведено предупреждение или может быть выброшено исключение. Для отметки выходного значения как использованного вызовите метод .mark_used().

concat

Просмотреть исходный код

concat(
    name=None
)

Возвращает значения в TensorArray в виде конкатенированного Tensor.

Все значения должны быть записаны, их ранги должны совпадать, а их формы должны совпадать для всех измерений, кроме первого.

Аргументы
name Имя операции (необязательно).
Возвращает
Все тензоры в TensorArray, конкатенированные в один тензор.

gather

Просмотреть исходный код

gather(
    indices, name=None
)

Возвращает выбранные значения в TensorArray в виде упакованного Tensor.

Все выбранные значения должны быть записаны, и их формы должны совпадать.

Аргументы
indices 1-D Tensor, принимающая значения в [0, max_value). Если TensorArray не динамическая, max_value=size().
name Имя операции (необязательно).
Возвращает
Тензоры в TensorArray выбранные по indices, упакованные в один тензор.

grad

Просмотреть исходный код

grad(
    source, flow=None, name=None
)

identity

Просмотреть исходный код

identity()

Возвращает TensorArray с тем же содержимым и свойствами.

Возвращает
Новый объект TensorArray с потоком, который гарантирует, что зависимости управления из контекстов станут зависимостями управления для записей, чтений и т.д. Используйте этот объект для всех последующих операций.

read

Просмотреть исходный код

read(
    index, name=None
)

Прочитать значение по адресу index в TensorArray.

Аргументы
index 0-мерный тензор int32 с индексом для чтения.
name Имя операции (необязательно).
Возвращает
Тензор по индексу index.

scatter

Просмотреть исходный код

scatter(
    indices, value, name=None
)

Разбросать значения Tensor по определенным индексам TensorArray.

Аргументы
indices 1-D Tensor, принимающая значения в [0, max_value). Если TensorArray не динамическая, max_value=size().
value (N+1)-мерный. Тензор типа dtype. Тензор для распаковки.
name Имя операции (необязательно).
Возвращает
Новый объект TensorArray с потоком, гарантирующим выполнение разброса. Используйте этот объект для всех последующих операций.
Возбуждает
ValueError если проверка формы завершается неудачно.
Примечание: Должно быть использовано значение, возвращаемое этой функцией. Если это не так, будет выведено предупреждение или может быть выброшено исключение. Для отметки выходного значения как использованного вызовите метод .mark_used().

size

Просмотреть исходный код

size(
    name=None
)

Возвращает размер TensorArray.

split

Просмотреть исходный код

split(
    value, lengths, name=None
)

Разделить значения Tensor в TensorArray.

Аргументы
value (N+1)-мерный тензор типа dtype. Тензор для разделения.
lengths 1-мерный вектор int32 с длинами, используемыми при разделении value по первому измерению.
name Название операции (необязательно).
Возвращаемое значение
Новый объект TensorArray с потоком, гарантирующим выполнение разделения. Используйте этот объект для всех последующих операций.
Исключения
ValueError если проверка формы завершается ошибкой.
Примечание: Результат этой функции должен быть использован. Если этого не сделать, будет выведено предупреждение или произойдёт ошибка. Чтобы отметить результат как использованный, вызовите метод .mark_used().

stack

Просмотреть исходный код

stack(
    name=None
)

Возвращает значения в TensorArray как объединённый Tensor.

Все значения должны быть записаны, и их формы должны совпадать. Если форма входных данных имеет ранг-R, то форма выходных данных будет иметь ранг-(R+1).

Для примера:

ta = tf.TensorArray(tf.int32, size=3)
ta.write(0, tf.constant([1, 2]))
ta.write(1, tf.constant([3, 4]))
ta.write(2, tf.constant([5, 6]))
ta.stack()
<tf.Tensor: shape=(3, 2), dtype=int32, numpy=
array([[1, 2],
       [3, 4],
       [5, 6]], dtype=int32)>
Аргументы
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 если число записей больше указанного.
Примечание: Результат этой функции должен быть использован. Если этого не сделать, будет выведено предупреждение или произойдёт ошибка. Чтобы отметить результат как использованный, вызовите метод .mark_used().

© 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/TensorArray

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API