tensoreflusso:: ops:: TensorArrayGrad

#include <data_flow_ops.h>

Crea un TensorArray per archiviare i gradienti dei valori nell'handle specificato.

Riepilogo

Se il gradiente TensorArray specificato esiste già, restituisce un riferimento ad esso.

Blocca la dimensione del TensorArray originale disabilitando il relativo flag di dimensione dinamica.

Una nota sull'input flow_in:

L'handle flow_in forza l'esecuzione della ricerca del gradiente solo dopo che si sono verificate determinate altre operazioni. Ad esempio, quando il TensorArray in avanti viene dimensionato dinamicamente, le scritture su questo TensorArray potrebbero ridimensionare l'oggetto. Il gradiente TensorArray viene dimensionato staticamente in base alla dimensione del TensorArray diretto quando viene eseguita questa operazione. Inoltre, la dimensione del TensorArray in avanti viene congelata da questa chiamata. Di conseguenza, il flusso viene utilizzato per garantire che la chiamata per generare il gradiente TensorArray avvenga solo dopo che tutte le scritture sono state eseguite.

Nel caso di TensorArray di dimensioni dinamiche, il calcolo del gradiente dovrebbe essere eseguito solo su operazioni di lettura che sono state concatenate tramite flusso in modo che avvengano solo dopo che tutte le scritture sono state eseguite. In questo modo la dimensione finale del TensorArray in avanti è nota quando viene chiamata questa operazione.

Una nota sull'attributo source:

Le chiamate al gradiente TensorArray utilizzano un oggetto TensorArray accumulatore. Se più gradienti vengono calcolati ed eseguiti nella stessa sessione, più nodi gradiente potrebbero fluire accidentalmente attraverso lo stesso accumulatore TensorArray . Questo conta due volte e generalmente interrompe il flusso del gradiente TensorArray .

La soluzione è identificare in quale chiamata di gradiente viene chiamato questo particolare gradiente TensorArray . Ciò viene eseguito identificando una stringa univoca (ad esempio "gradients", "gradients_1", ...) dal nome del gradiente di input Tensor . Questa stringa viene utilizzata come suffisso durante la creazione dell'oggetto gradiente TensorArray qui (l'attributo source ).

L'attributo source viene aggiunto come suffisso al nome del TensorArray in avanti durante l'esecuzione della creazione/ricerca, in modo che ogni calcolo del gradiente separato ottenga il proprio accumulatore TensorArray .

Argomenti:

  • scope: un oggetto Scope
  • handle: l'handle per il TensorArray in avanti.
  • flow_in: uno scalare float che impone il corretto concatenamento delle operazioni.
  • source: la stringa sorgente del gradiente, utilizzata per decidere quale TensorArray gradiente restituire.

Ritorna:

Costruttori e distruttori

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

Attributi pubblici

flow_out
grad_handle
operation

Attributi pubblici

defluire

::tensorflow::Output flow_out

grad_handle

::tensorflow::Output grad_handle

operazione

Operation operation

Funzioni pubbliche

TensorArrayGrad

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