StopGradient

publiczna klasa końcowa StopGradient

Zatrzymuje obliczenia gradientu.

Po wykonaniu na wykresie ta operacja wyprowadza tensor wejściowy w niezmienionej postaci.

Podczas tworzenia operacji do obliczania gradientów ta operacja uniemożliwia uwzględnienie wkładu danych wejściowych. Zwykle generator gradientów dodaje do wykresu opcje w celu obliczenia pochodnych określonej „straty” poprzez rekurencyjne wyszukiwanie danych wejściowych, które przyczyniły się do jej obliczenia. Jeśli wstawisz tę opcję na wykres, wprowadzone dane zostaną zamaskowane z generatora gradientów. Nie są one brane pod uwagę przy obliczaniu gradientów.

Jest to przydatne za każdym razem, gdy chcesz obliczyć wartość za pomocą TensorFlow, ale musisz udawać, że wartość jest stała. Na przykład funkcję softmax dla wektora x można zapisać jako

def softmax(x):
     numerator = tf.exp(x)
     denominator = tf.reduce_sum(numerator)
     return numerator / denominator
 
Jednakże może to spowodować przepełnienie, jeśli wartości w x są duże. Alternatywnym, bardziej stabilnym sposobem jest odjęcie maksimum x od każdej wartości.
def stable_softmax(x):
     z = x - tf.reduce_max(x)
     numerator = tf.exp(z)
     denominator = tf.reduce_sum(numerator)
     return numerator / denominator
 
Jednakże, gdy cofamy się przez softmax do x, nie chcemy wspierać obliczeń tf.reduce_max(x) (jeśli wartości maksymalne nie są unikalne, gradient może spłynąć do niewłaściwych danych wejściowych) i traktować to jako stała. Dlatego powinniśmy zapisać to jako
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
 
. Oto inne przykłady:
  • Algorytm EM , w którym krok M nie powinien obejmować propagacji wstecznej na wyjściu kroku E.
  • Trening dywergencji kontrastowej maszyn Boltzmanna, gdzie przy różniczkowaniu funkcji energii trening nie może propagować wstecznie po wykresie, który wygenerował próbki z modelu.
  • Szkolenie kontradyktoryjne, podczas którego nie powinno odbywać się wsparcie w procesie generowania przykładów kontradyktoryjnych.

Metody publiczne

Wyjście <T>
jako wyjście ()
Zwraca symboliczny uchwyt tensora.
statyczny <T> StopGradient <T>
utwórz (zakres zakresu , wejście argumentu <T>)
Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację StopGradient.
Wyjście <T>

Metody dziedziczone

Metody publiczne

publiczne wyjście <T> asOutput ()

Zwraca symboliczny uchwyt tensora.

Dane wejściowe operacji TensorFlow są wynikami innej operacji TensorFlow. Ta metoda służy do uzyskania symbolicznego uchwytu reprezentującego obliczenia danych wejściowych.

public static StopGradient <T> utwórz (zakres zakresu , wejście argumentu <T>)

Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację StopGradient.

Parametry
zakres aktualny zakres
Zwroty
  • nowa instancja StopGradient

publiczne wyjście <T> wyjście ()