Spec-Zone.ru › TensorFlow 2.3

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 (обязательно) тип данных массива тензоров.
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()

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

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

read

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

read(
    index, name=None
)

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

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

Возвращает размер массива тензоров.

split

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

split(
    value, lengths, name=None
)

Разделить значения Tensor в массив тензоров.

Аргументы
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.3/api_docs/python/tf/TensorArray

Spec-Zone.ru

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