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.
Resi:
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
flusso_fuori
::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 )