Aviso: esta API está obsoleta e será removida em uma versão futura do TensorFlow depois que a substituição estiver estável.

StopGradient

classe final pública StopGradient

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

def softmax(x):
     numerator = tf.exp(x)
     denominator = tf.reduce_sum(numerator)
     return numerator / denominator
 
Isso, entretanto, é 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 backprop através do softmax para x, não queremos 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) cálculo e tratar isso como uma constante. Portanto, devemos escrever 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 em que a etapa M não deve envolver retropropagação por meio da saída da etapa E.
  • 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.
static <T> StopGradient <T>
criar ( escopo do escopo, entrada Operand <T>)
Método de fábrica para criar uma classe envolvendo 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 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

output public Output <T> output ()