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> | |
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