Se usó la API de Cloud Translation para traducir esta página.
Switch to English

tf.TensorArray

Versión de TensorFlow 1 Ver fuente en GitHub

Encapsulado de clases de arreglos Tensor de tamaño dinámico, por paso de tiempo y de una sola escritura.

Usado en los cuadernos

Usado en la guía Usado en los tutoriales

Esta clase está destinada a utilizarse con primitivas de iteración dinámica como while_loop y map_fn . Es compatible con la retropropagación del gradiente mediante dependencias de flujo de control de "flujo" especiales.

Ejemplo 1: lectura y escritura sencillas.

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)>

Ejemplo 2: algoritmo de secuencia de Fibonacci que escribe en un bucle y luego regresa.

@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)>

Ejemplo 3: Un bucle simple que interactúa con una 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 (obligatorio) tipo de datos de TensorArray.
size (opcional) int32 scalar Tensor : el tamaño del TensorArray. Requerido si no se proporciona el asa.
dynamic_size (opcional) Python bool: si es verdadero, las escrituras en TensorArray pueden hacer crecer TensorArray más allá de su tamaño inicial. Predeterminado: Falso.
clear_after_read Booleano (opcional, predeterminado: verdadero). Si es True, borre los valores de TensorArray después de leerlos. Esto deshabilita la semántica de lectura múltiple, pero permite la liberación anticipada de memoria.
tensor_array_name (opcional) Cadena de Python: el nombre de TensorArray. Esto se usa al crear el identificador TensorArray. Si se establece este valor, el identificador debe ser Ninguno.
handle (opcional) Un controlador de Tensor para un TensorArray existente. Si se establece, tensor_array_name debería ser None. Solo se admite en modo gráfico.
flow (opcional) Un escalar float Tensor procedente de un TensorArray.flow existente. Solo se admite en modo gráfico.
infer_shape (opcional, predeterminado: Verdadero) Si es Verdadero, la inferencia de forma está habilitada. En este caso, todos los elementos deben tener la misma forma.
element_shape (opcional, predeterminado: Ninguno) Un objeto TensorShape que especifica las restricciones de forma de cada uno de los elementos de TensorArray. No es necesario definirlo completamente.
colocate_with_first_write_call Si es True , TensorArray se colocará en el mismo dispositivo que el Tensor que se usó en su primera escritura (las operaciones de write incluyen write , unstack y split ). Si es False , TensorArray se colocará en el dispositivo determinado por el contexto del dispositivo disponible durante su inicialización.
name Un nombre para la operación (opcional).

ValueError si se proporcionan tanto handle como tensor_array_name.
TypeError si se proporciona el identificador pero no es un tensor.

dtype El tipo de datos de este TensorArray.
dynamic_size Python bool; si es True TensorArray puede crecer dinámicamente.
element_shape El tf.TensorShape de elementos en este TensorArray.
flow El Tensor flujo obliga a las operaciones que conducen a este estado de TensorArray.
handle La referencia a TensorArray.

Métodos

close

Ver fuente

Cierre el TensorArray actual.

concat

Ver fuente

Devuelve los valores de TensorArray como un Tensor concatenado.

Todos los valores deben haber sido escritos, sus rangos deben coincidir y sus formas deben coincidir para todas las dimensiones excepto la primera.

Args
name Un nombre para la operación (opcional).

Devoluciones
Todos los tensores del TensorArray se concatenaron en un tensor.

gather

Ver fuente

Devuelve los valores seleccionados en TensorArray como un Tensor empaquetado.

Todos los valores seleccionados deben haberse escrito y sus formas deben coincidir.

Args
indices Un Tensor 1-D toma valores en [0, max_value) . Si TensorArray no es dinámico, max_value=size() .
name Un nombre para la operación (opcional).

Devoluciones
Los tensores en TensorArray seleccionados por indices , empaquetados en un tensor.

grad

Ver fuente

identity

Ver fuente

Devuelve un TensorArray con el mismo contenido y propiedades.

Devoluciones
Un nuevo objeto TensorArray con flujo que asegura que las dependencias de control de los contextos se convertirán en dependencias de control para escrituras, lecturas, etc. Utilice este objeto para todas las operaciones posteriores.

read

Ver fuente

Lea el valor en el