TensorArrayGrad

classe finale publique TensorArrayGrad

Crée un TensorArray pour stocker les dégradés de valeurs dans le handle donné.

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 tenseur de gradient d'entrée. Cette chaîne est utilisée comme suffixe lors de la création de l'objet dégradé TensorArray ici (l'attribut « source »).

L'attribut « source » est ajouté en tant que suffixe au nom du TensorArray direct lors de la création/recherche, de sorte que chaque calcul de gradient distinct obtienne son propre accumulateur TensorArray.

Méthodes publiques

TensorArrayGrad statique
créer ( Portée de portée , Opérande <?> handle, Opérande <Float> flowIn, Source de chaîne)
Méthode d'usine pour créer une classe encapsulant une nouvelle opération TensorArrayGrad.
Sortie <Flottant>
Sortie <?>

Méthodes héritées

Méthodes publiques

public static TensorArrayGrad create ( Scope scope, Operand <?> handle, Operand <Float> flowIn, String source)

Méthode d'usine pour créer une classe encapsulant une nouvelle opération TensorArrayGrad.

Paramètres
portée portée actuelle
poignée Le handle du TensorArray avant.
fluxIn 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.
Retour
  • une nouvelle instance de TensorArrayGrad

sortie publique <Float> flowOut ()

sortie publique <?> gradHandle ()