StopGradient

StopGradient public final class

Detiene el cálculo del gradiente.

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

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

Esto es útil siempre que desee calcular un valor con TensorFlow, pero debe pretender que el valor era una constante. Por ejemplo, la función softmax para un vector x puede escribirse como

def softmax(x):
     numerator = tf.exp(x)
     denominator = tf.reduce_sum(numerator)
     return numerator / denominator
 
Esto sin embargo es susceptible de desbordamiento si los valores de 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 a través de la Backprop softmax ax, no queremos que a través de la Backprop `tf.reduce_max (x)` (si los valores máximos no son únicos a continuación, el gradiente puede fluir a la entrada equivocada) de cálculo y tratamiento eso como una constante. Por lo tanto, debemos 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 M-paso no debe implicar propagación hacia atrás a través de la salida de la E-paso.
  • Entrenamiento de divergencia contrastiva de máquinas de Boltzmann donde, al diferenciar la función de energía, el entrenamiento no debe retropropagarse a través del gráfico que generó las muestras a partir del modelo.
  • Entrenamiento adversario, donde no debe ocurrir ningún retroceso a través del proceso de generación de ejemplos adversarios.

Métodos públicos

Salida <T>
asOutput ()
Devuelve el identificador simbólico de un tensor.
estática <T> StopGradient <T>
crear ( Alcance alcance, operando <T> entrada)
Método de fábrica para crear una clase que envuelva una nueva operación StopGradient.
Salida <T>
salida ()

Métodos heredados

Métodos públicos

pública de salida <T> asOutput ()

Devuelve el identificador simbólico de un tensor.

Las entradas a 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.

public static StopGradient <T> crear ( Alcance alcance, operando <T> entrada)

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

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

pública de salida <T> salida ()