Spec-Zone.ru › TensorFlow 2.4

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: Если True, записи в TensorArray могут увеличивать размер TensorArray за пределами начального размера. По умолчанию: False.
clear_after_read Логическое значение (необязательно, по умолчанию: True). Если True, значения TensorArray очищаются после их чтения. Это отключает семантику многократного чтения, но позволяет раннее освобождение памяти.
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; если 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 с потоком, который гарантирует выполнение scatter. Используйте этот объект для всех последующих операций.
Возбуждает
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).

Аргументы
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().

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

Spec-Zone.ru

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