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 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 están enmascaradas desde el generador de gradiente. No se tienen en cuenta para calcular los gradientes.
Esto es útil siempre que desee calcular un valor con TensorFlow pero necesite fingir 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
def stable_softmax(x):
z = x - tf.reduce_max(x)
numerator = tf.exp(z)
denominator = tf.reduce_sum(numerator)
return numerator / denominator
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 comodef stable_softmax(x):
z = x - tf.stop_gradient(tf.reduce_max(x))
numerator = tf.exp(z)
denominator = tf.reduce_sum(numerator)
return numerator / denominator
- El algoritmo EM donde el paso M no debería implicar propagación hacia atrás a través de la salida del paso E.
- Entrenamiento de divergencia contrastante 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 de confrontación, donde no debe ocurrir ningún backprop a través del proceso de generación de ejemplos de confrontación.
Métodos públicos
Salida <T> | como salida () Devuelve el identificador simbólico de un tensor. |
estático <T> DetenerGradiente <T> | |
Salida <T> | producción () |
Métodos heredados
Métodos públicos
Salida pública <T> como Salida ()
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.
creación pública estática de StopGradient <T> (alcance del alcance, entrada del 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