StopGradient

StopGradient classe final pública

Pára o cálculo do gradiente.

Quando executado em um gráfico, este op produz seu tensor de entrada no estado em que se encontra.

Ao construir operações para calcular gradientes, esta operação evita que a contribuição de suas entradas seja levada em consideração. Normalmente, o gerador de gradiente adiciona ops a um gráfico para calcular as derivadas de uma 'perda' especificada, descobrindo recursivamente as entradas que contribuíram para seu cálculo. Se você inserir esta op no gráfico, suas entradas serão mascaradas do gerador de gradiente. Eles não são levados em consideração para gradientes de computação.

Isso é útil sempre que você deseja calcular um valor com o TensorFlow, mas precisa fingir que o valor era uma constante. Por exemplo, a função softmax para um vetor x pode ser escrito como

def softmax(x):
     numerator = tf.exp(x)
     denominator = tf.reduce_sum(numerator)
     return numerator / denominator
 
Isto, porém, é susceptível de transbordamento se os valores de X são grandes. Uma forma alternativa mais estável é subtrair o máximo de x de cada um dos valores.
def stable_softmax(x):
     z = x - tf.reduce_max(x)
     numerator = tf.exp(z)
     denominator = tf.reduce_sum(numerator)
     return numerator / denominator
 
No entanto, quando Retropropagação através do softmax para x, nós não queremos Retropropagação através do `tf.reduce_max (x)` (se os valores máximos não são exclusivas, em seguida, o gradiente pode fluir para a entrada errada) cálculo e deleite isso como uma constante. Portanto, devemos escrever este 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
 
Alguns outros exemplos incluem:
  • O algoritmo EM, onde o H-passo não deve envolver retropropagação através da saída da E-passo.
  • Treinamento de divergência contrastiva de máquinas de Boltzmann onde, ao diferenciar a função energia, o treinamento não deve retropropagar através do gráfico que gerou as amostras do modelo.
  • Treinamento adversário, onde nenhum backprop deve acontecer durante o processo de geração de exemplo adversário.

Métodos Públicos

Output <T>
asOutput ()
Retorna o identificador simbólico de um tensor.
estática <T> StopGradient <T>
criar ( Scope escopo, Operando <T> entrada)
Método de fábrica para criar uma classe envolvendo uma nova operação StopGradient.
Output <T>
saída ()

Métodos herdados

Métodos Públicos

pública Output <T> asOutput ()

Retorna o identificador simbólico de um tensor.

As entradas para as operações do TensorFlow são saídas de outra operação do TensorFlow. Este método é usado para obter um identificador simbólico que representa o cálculo da entrada.

public static StopGradient <T> create ( Scope escopo, Operando <T> entrada)

Método de fábrica para criar uma classe envolvendo uma nova operação StopGradient.

Parâmetros
alcance escopo atual
Devoluções
  • uma nova instância de StopGradient

pública Output <T> de saída ()