StopGradient

classe final pública StopGradient

Interrompe o cálculo do gradiente.

Quando executada em um gráfico, esta operação gera seu tensor de entrada como está.

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 operações a um gráfico para calcular as derivadas de uma 'perda' especificada, descobrindo recursivamente as entradas que contribuíram para o seu cálculo. Se você inserir esta operação no gráfico, as 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, isso é suscetível a estouro se os valores em x forem 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 fazemos backprop através do softmax para x, não queremos fazer backprop através do cálculo tf.reduce_max(x) (se os valores máximos não forem únicos, então o gradiente pode fluir para a entrada errada) e tratar isso 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 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

Saída <T>
asOutput ()
Retorna o identificador simbólico de um tensor.
estático <T> StopGradient <T>
create (escopo do escopo , entrada do 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

Saída pública <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 , entrada Operand <T>)

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

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

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