StopGradient

classe final pública StopGradient

Interrompe o cálculo do gradiente.

Quando executado em um gráfico, este op gera seu tensor de entrada como está.

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

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

def softmax(x):
     numerator = tf.exp(x)
     denominator = tf.reduce_sum(numerator)
     return numerator / denominator
 
. No entanto, é suscetível a estouro se os valores em x forem grandes. Uma maneira 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 fazemos backprop através do softmax para x, não queremos fazer backprop através do tf.reduce_max(x) (se os valores máximos não forem únicos, o gradiente pode fluir para a entrada errada) e tratá-lo como uma constante. Portanto, devemos escrever isso 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 M-step não deve envolver retropropagação através da saída do E-step .
  • 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 grafo que gerou as amostras do modelo.
  • Treinamento adversário, onde nenhum backprop deve acontecer através do processo de geração de exemplo adversário.

Métodos públicos

Saída <T>
comoSaída ()
Retorna o identificador simbólico de um tensor.
estático <T> StopGradient <T>
create ( Escopo do escopo, entrada Operando <T>)
Método de fábrica para criar uma classe que envolve uma nova operação StopGradient.
Saída <T>
saída ()

Métodos Herdados

Métodos públicos

Public Output <T> asOutput ()

Retorna o identificador simbólico de um tensor.

As entradas para 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 ( Escopo do escopo, Operando <T> entrada)

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

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

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