tensorflow:: ops:: TensorArrayGrad

#include <data_flow_ops.h>

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

Resumen

Si el gradiente de TensorArray dado ya existe, devuelve una referencia al mismo.

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

Una nota sobre el flujo de entrada flow_in:

El identificador flow_in fuerza la ejecución de la búsqueda de gradiente solo después de que se hayan realizado ciertas operaciones. Por ejemplo, cuando el TensorArray directo tiene un tamaño dinámico, las escrituras en este TensorArray pueden cambiar su tamaño. El TensorArray de gradiente tiene un tamaño estático basado en el tamaño del TensorArray directo cuando se ejecuta esta operación. Además, el tamaño del TensorArray directo se congela con esta llamada. En consecuencia, el flujo se utiliza para garantizar que la llamada para generar el TensorArray de gradiente solo se produzca después de que se hayan ejecutado 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, a su vez, se hayan encadenado mediante flujo para que se ejecuten únicamente después de que se hayan completado todas las escrituras. De esta forma, se conoce el tamaño final del TensorArray de avance cuando se llama a esta operación.

Una nota sobre el atributo de origen:

Las llamadas a gradientes de TensorArray utilizan un objeto TensorArray acumulador. Si se calculan y ejecutan varios gradientes en la misma sesión, los nodos de gradiente pueden pasar accidentalmente por el mismo TensorArray acumulador. Esto duplica el conteo y, por lo general, interrumpe el flujo de gradientes de TensorArray .

La solución consiste en identificar en qué llamada de gradiente se está llamando a este gradiente TensorArray en particular. Esto se realiza identificando una cadena única (por ejemplo, "gradients", "gradients_1", ...) del nombre del Tensor de gradiente de entrada. Esta cadena se utiliza como sufijo al crear el objeto de gradiente TensorArray aquí (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 independiente obtenga su propio acumulador TensorArray .

Argumentos:

  • ámbito: Un objeto de ámbito
  • identificador: El identificador del TensorArray de avance.
  • flow_in: Un escalar de tipo float que garantiza el encadenamiento adecuado de las 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

flujo_salida

::tensorflow::Output flow_out

identificador de graduación

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