flujo tensor:: operaciones:: TensorArrayGrad

#include <data_flow_ops.h>

Crea un TensorArray para almacenar los gradientes de valores en el identificador dado.

Resumen

Si el gradiente de TensorArray dado ya existe, devuelve una referencia a él.

Bloquea el tamaño del TensorArray original deshabilitando su indicador de tamaño dinámico.

Una nota sobre la entrada flow_in:

El identificador flow_in fuerza que la ejecución de la búsqueda de gradiente se produzca solo después de que se hayan producido otras operaciones determinadas. Por ejemplo, cuando el tamaño del TensorArray directo tiene un tamaño dinámico, las escrituras en este TensorArray pueden cambiar el tamaño del objeto. El TensorArray degradado tiene un tamaño estático según el tamaño del TensorArray directo cuando se ejecuta esta operación. Además, esta llamada congela el tamaño del TensorArray directo. Como resultado, el flujo se utiliza para garantizar que la llamada para generar el TensorArray de gradiente solo ocurra después de que se ejecuten todas las escrituras.

En el caso de TensorArrays de tamaño dinámico, el cálculo del gradiente solo debe realizarse en operaciones de lectura que se han encadenado a través del flujo para que ocurran solo después de que se hayan ejecutado todas las escrituras. De esa manera, se conoce el tamaño final del TensorArray directo cuando se llama a esta operación.

Una nota sobre el atributo fuente:

Las llamadas de gradiente de TensorArray utilizan un objeto TensorArray acumulador. Si se calculan y ejecutan varios gradientes en la misma sesión, los múltiples nodos de gradiente pueden fluir accidentalmente a través del mismo acumulador TensorArray . Esto cuenta dos veces y generalmente rompe el flujo de gradiente de TensorArray .

La solución es identificar en qué llamada de gradiente se llama este gradiente de TensorArray en particular. Esto se realiza identificando una cadena única (por ejemplo, "gradients", "gradients_1", ...) a partir del nombre del Tensor de gradiente de entrada. Esta cadena se usa como sufijo al crear aquí el objeto de gradiente TensorArray (el atributo source ).

El atributo source se agrega como un sufijo al nombre del TensorArray directo al realizar la creación/búsqueda, de modo que cada cálculo de gradiente por separado obtenga su propio acumulador de TensorArray .

Argumentos:

  • alcance: un objeto de alcance
  • handle: El identificador del TensorArray directo.
  • flow_in: un escalar flotante que impone el encadenamiento adecuado de operaciones.
  • fuente: la cadena de origen del gradiente, utilizada para decidir qué TensorArray de gradiente devolver.

Devoluciones:

Constructores y destructores

TensorArrayGrad (const :: tensorflow::Scope & scope, :: tensorflow::Input handle, :: tensorflow::Input flow_in, StringPiece source)

Atributos públicos

flow_out
grad_handle
operation

Atributos públicos

fluir fuera

::tensorflow::Output flow_out

mango_graduado

::tensorflow::Output grad_handle

operación

Operation operation

Funciones públicas

TensorArrayGrad

 TensorArrayGrad(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input handle,
  ::tensorflow::Input flow_in,
  StringPiece source
)