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

org.tensorflow.op.PrimitiveOp
booleano final
é igual (objeto obj)
int final
Operação
op ()
Retorna a Operation subjacente
sequência final
booleano
é igual (objeto arg0)
aula final<?>
getClass ()
interno
código hash ()
vazio final
notificar ()
vazio final
notificar todos ()
Corda
toString ()
vazio final
espere (long arg0, int arg1)
vazio final
espere (arg0 longo)
vazio final
espere ()
org.tensorflow.Operand
Saída abstrata <T>
asOutput ()
Retorna o identificador simbólico de um tensor.

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 ()