StopGradient

clase final pública StopGradient

Detiene el cálculo del gradiente.

Cuando se ejecuta en un gráfico, esta operación genera su tensor de entrada tal cual.

Al crear operaciones para calcular gradientes, esta operación evita que se tenga en cuenta la contribución de sus entradas. Normalmente, el generador de gradientes agrega operaciones a un gráfico para calcular las derivadas de una "pérdida" específica al encontrar recursivamente las entradas que contribuyeron a su cálculo. Si inserta esta opción en el gráfico, las entradas se enmascaran del generador de gradiente. No se tienen en cuenta para calcular los gradientes.

Esto es útil cada vez que desea calcular un valor con TensorFlow pero necesita pretender que el valor era una constante. Por ejemplo, la función softmax para un vector x se puede escribir como

def softmax(x):
     numerator = tf.exp(x)
     denominator = tf.reduce_sum(numerator)
     return numerator / denominator
 
Sin embargo, esto es susceptible de desbordarse si los valores en x son grandes. Una forma alternativa más estable es restar el máximo de x de cada uno de los valores.
def stable_softmax(x):
     z = x - tf.reduce_max(x)
     numerator = tf.exp(z)
     denominator = tf.reduce_sum(numerator)
     return numerator / denominator
 
Sin embargo, cuando hacemos backprop a través del softmax a x, no queremos backprop a través del tf.reduce_max(x) (si los valores máximos no son únicos, entonces el gradiente podría fluir a la entrada incorrecta) y tratarlo como una constante. Por lo tanto, deberíamos escribir esto como
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
 
Algunos otros ejemplos incluyen:
  • El algoritmo EM en el que el paso M no debe implicar una retropropagación a través de la salida del paso E.
  • Entrenamiento de divergencia contrastiva de máquinas de Boltzmann donde, al diferenciar la función de energía, el entrenamiento no debe propagarse hacia atrás a través del gráfico que generó las muestras del modelo.
  • Entrenamiento contradictorio, en el que no debe ocurrir ningún respaldo a través del proceso de generación de ejemplos contradictorios.

Métodos públicos

Salida <T>
como salida ()
Devuelve el identificador simbólico de un tensor.
<T> estático Gradiente de parada <T>
crear ( ámbito de ámbito, entrada de operando <T>)
Método de fábrica para crear una clase que envuelve una nueva operación StopGradient.
Salida <T>
salida ()

Métodos Heredados

Métodos públicos

salida pública <T> como salida ()

Devuelve el identificador simbólico de un tensor.

Las entradas de las operaciones de TensorFlow son salidas de otra operación de TensorFlow. Este método se utiliza para obtener un identificador simbólico que representa el cálculo de la entrada.

StopGradient público estático <T> crear ( ámbito de alcance, entrada de operando <T>)

Método de fábrica para crear una clase que envuelve una nueva operación StopGradient.

Parámetros
alcance alcance actual
Devoluciones
  • una nueva instancia de StopGradient

salida pública <T> salida ()