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 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
 
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 retrocedemos a través de softmax a x, no queremos retroceder a través del cálculo 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 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 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 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>
crear (alcance alcance , entrada Operando <T>)
Método de fábrica para crear una clase que envuelve una nueva operación StopGradient.
Salida <T>

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

Salida pública <T> salida ()