flux tensoriel : : opérations : : TensorArrayGrad
#include <data_flow_ops.h>
Crée un TensorArray pour stocker les dégradés de valeurs dans le handle donné.
Résumé
Si le dégradé TensorArray donné existe déjà, renvoie une référence à celui-ci.
Verrouille la taille du TensorArray d'origine en désactivant son indicateur de taille dynamique.
Une note sur l'entrée flow_in :
Le handle flow_in force l’exécution de la recherche de gradient à se produire uniquement après que certaines autres opérations se soient produites. Par exemple, lorsque le TensorArray direct est dimensionné dynamiquement, les écritures sur ce TensorArray peuvent redimensionner l'objet. Le TensorArray dégradé est dimensionné de manière statique en fonction de la taille du TensorArray avant lors de l'exécution de cette opération. De plus, la taille du TensorArray direct est gelée par cet appel. En conséquence, le flux est utilisé pour garantir que l'appel pour générer le gradient TensorArray ne se produit qu'une fois toutes les écritures exécutées.
Dans le cas de TensorArrays de taille dynamique, le calcul du gradient ne doit être effectué que sur les opérations de lecture qui ont elles-mêmes été enchaînées via un flux pour ne se produire qu'après l'exécution de toutes les écritures. De cette façon, la taille finale du TensorArray direct est connue lorsque cette opération est appelée.
Une remarque sur l'attribut source :
Les appels de dégradé TensorArray utilisent un objet TensorArray accumulateur. Si plusieurs dégradés sont calculés et exécutés au cours de la même session, les multiples nœuds de dégradé peuvent accidentellement traverser le même accumulateur TensorArray . Cela compte double et interrompt généralement le flux de gradient TensorArray .
La solution consiste à identifier dans quel appel de gradient ce gradient TensorArray particulier est appelé. Ceci est effectué en identifiant une chaîne unique (par exemple "gradients", "gradients_1", ...) à partir du nom du gradient d'entrée Tensor . Cette chaîne est utilisée comme suffixe lors de la création ici de l'objet dégradé TensorArray (l'attribut source
).
La source
d'attribut est ajoutée en tant que suffixe au nom du TensorArray avant lors de la création/recherche, de sorte que chaque calcul de gradient distinct obtienne son propre accumulateur TensorArray .
Arguments :
- scope : un objet Scope
- handle : le handle du TensorArray avant.
- flow_in : un scalaire flottant qui applique un chaînage approprié des opérations.
- source : la chaîne source du dégradé, utilisée pour décider quel dégradé TensorArray renvoyer.
Retours :
Constructeurs et Destructeurs | |
---|---|
TensorArrayGrad (const :: tensorflow::Scope & scope, :: tensorflow::Input handle, :: tensorflow::Input flow_in, StringPiece source) |
Attributs publics | |
---|---|
flow_out | |
grad_handle | |
operation |
Attributs publics
flux_out
::tensorflow::Output flow_out
grad_handle
::tensorflow::Output grad_handle
opération
Operation operation
Fonctions publiques
TensorArrayGrad
TensorArrayGrad( const ::tensorflow::Scope & scope, ::tensorflow::Input handle, ::tensorflow::Input flow_in, StringPiece source )