tensorflow::ops::TensorArrayGrad
#include <data_flow_ops.h>Crea un TensorArray per memorizzare i gradienti dei valori nell'handle specificato.
Riepilogo
Se il gradiente TensorArray specificato esiste già, restituisce un riferimento ad esso.
Blocca le dimensioni del TensorArray originale disabilitando il flag di dimensione dinamica.
Una nota sul flusso di input:
L'handle flow_in impone che l'esecuzione della ricerca del gradiente avvenga solo dopo che determinate altre operazioni si sono concluse. Ad esempio, quando il TensorArray forward ha dimensioni dinamiche, le scritture su questo TensorArray possono ridimensionare l'oggetto. Il TensorArray del gradiente ha dimensioni statiche basate sulle dimensioni del TensorArray forward al momento dell'esecuzione di questa operazione. Inoltre, le dimensioni del TensorArray forward vengono bloccate da questa chiamata. Di conseguenza, il flusso viene utilizzato per garantire che la chiamata per generare il TensorArray del gradiente avvenga solo dopo che tutte le scritture sono state eseguite.
Nel caso di TensorArray a dimensione dinamica, il calcolo del gradiente dovrebbe essere eseguito solo sulle operazioni di lettura che sono state a loro volta concatenate tramite flusso in modo da verificarsi solo dopo che tutte le scritture sono state eseguite. In questo modo la dimensione finale del TensorArray risultante è nota quando viene chiamata questa operazione.
Una nota sull'attributo sorgente:
Le chiamate ai gradienti di TensorArray utilizzano un oggetto accumulatore TensorArray . Se vengono calcolati ed eseguiti più gradienti nella stessa sessione, i nodi dei gradienti multipli potrebbero accidentalmente passare attraverso lo stesso accumulatore TensorArray . Questo causa un doppio conteggio e, in genere, interrompe il flusso del gradiente di TensorArray .
La soluzione consiste nell'identificare in quale chiamata di gradiente viene richiamato questo particolare gradiente di TensorArray . Ciò si ottiene identificando una stringa univoca (ad esempio "gradients", "gradients_1", ...) dal nome del tensore del gradiente di input. Questa stringa viene utilizzata come suffisso durante la creazione dell'oggetto gradiente di TensorArray (l'attributo source ).
L'attributo source viene aggiunto come suffisso al nome del TensorArray forward durante la creazione/ricerca, in modo che ogni singolo calcolo del gradiente ottenga il proprio accumulatore TensorArray .
Argomentazioni:
- ambito: un oggetto Scope
- handle: L'handle al TensorArray forward.
- flow_in: Uno scalare float che impone il corretto concatenamento delle operazioni.
- sorgente: La stringa sorgente del gradiente, utilizzata per decidere quale TensorArray del 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 in uscita
::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 )