StopGradient

classe finale publique StopGradient

Arrête le calcul du gradient.

Lorsqu'elle est exécutée dans un graphique, cette opération génère son tenseur d'entrée tel quel.

Lors de la construction d'opérations pour calculer des gradients, cette opération empêche la prise en compte de la contribution de ses entrées. Normalement, le générateur de gradient ajoute des opérations à un graphique pour calculer les dérivées d'une « perte » spécifiée en recherchant de manière récursive les entrées qui ont contribué à son calcul. Si vous insérez cette opération dans le graphique, ses entrées sont masquées du générateur de dégradé. Ils ne sont pas pris en compte pour le calcul des gradients.

Ceci est utile chaque fois que vous souhaitez calculer une valeur avec TensorFlow mais que vous devez prétendre que la valeur était une constante. Par exemple, la fonction softmax pour un vecteur x peut être écrite sous la forme

def softmax(x):
     numerator = tf.exp(x)
     denominator = tf.reduce_sum(numerator)
     return numerator / denominator
 
Elle est cependant susceptible de déborder si les valeurs de x sont grandes. Une autre manière plus stable consiste à soustraire le maximum de x de chacune des valeurs.
def stable_softmax(x):
     z = x - tf.reduce_max(x)
     numerator = tf.exp(z)
     denominator = tf.reduce_sum(numerator)
     return numerator / denominator
 
Cependant, lorsque nous effectuons une rétropropagation via le softmax vers x, nous ne voulons pas effectuer une rétropropagation via le tf.reduce_max(x) (si les valeurs maximales ne sont pas uniques, le gradient pourrait se diriger vers la mauvaise entrée) et traiter cela comme une constante. Par conséquent, nous devrions écrire ceci sous la forme
def stable_softmax(x):
     z = x - tf.stop_gradient(tf.reduce_max(x))
     numerator = tf.exp(z)
     denominator = tf.reduce_sum(numerator)
     return numerator / denominator
 
Voici d'autres exemples :
  • L'algorithme EM où l' étape M ne devrait pas impliquer de rétropropagation via la sortie de l' étape E.
  • Entraînement à divergence contrastée des machines Boltzmann où, lors de la différenciation de la fonction énergétique, l'entraînement ne doit pas se propager à travers le graphique qui a généré les échantillons à partir du modèle.
  • Formation contradictoire, où aucun retour en arrière ne devrait se produire via le processus de génération d'exemples contradictoires.

Méthodes publiques

Sortie <T>
comme Sortie ()
Renvoie le handle symbolique d'un tenseur.
statique <T> StopGradient <T>
créer (portée de portée , entrée opérande <T>)
Méthode d'usine pour créer une classe encapsulant une nouvelle opération StopGradient.
Sortie <T>
sortir ()

Méthodes héritées

Méthodes publiques

sortie publique <T> asOutput ()

Renvoie le handle symbolique d'un tenseur.

Les entrées des opérations TensorFlow sont les sorties d'une autre opération TensorFlow. Cette méthode est utilisée pour obtenir un handle symbolique qui représente le calcul de l’entrée.

public static StopGradient <T> créer (portée Scope , entrée Operand <T>)

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

Paramètres
portée portée actuelle
Retour
  • une nouvelle instance de StopGradient

sortie publique <T> sortie ()