Esta página foi traduzida pela API Cloud Translation.
Switch to English

tf.clip_by_norm

TensorFlow 1 versão Ver fonte no GitHub

Clips tensor valores para um máximo L2-norma.

Usado nos cadernos

Usado na guia

Dado um tensor de t , e um valor máximo grampo clip_norm , esta operação normaliza t de modo que a sua L2-norma é menos do que ou igual a clip_norm , ao longo das dimensões indicadas em axes . Especificamente, no caso em que todas as dimensões padrão são usados para o cálculo, se o L2-norma de t já é inferior a ou igual a clip_norm , em seguida, t não é modificada. Se a L2-norma é maior do que clip_norm , em seguida, esta operação retorna um tensor do mesmo tipo e forma como t com os seus valores definido como:

t * clip_norm / l2norm(t)

Neste caso, a L2-norma do tensor de saída é clip_norm .

Como outro exemplo, se t é uma matriz e axes == [1] , em seguida, cada linha da saída terá L2-norma inferior a ou igual a clip_norm . Se axes == [0] em vez disso, cada coluna da saída vai ser cortada.

exemplo de código:

some_nums = tf.constant([[1, 2, 3, 4, 5]], dtype=tf.float32)
tf.clip_by_norm(some_nums, 2.0).numpy()
array([[0.26967996, 0.5393599 , 0.80903983, 1.0787199 , 1.3483998 ]],
      dtype=float32)

Esta operação é normalmente utilizado para gradientes grampo antes de aplicá-las com um optimizador. A maioria dos dados gradiente é uma colecção de diferentes tensores conformados para diferentes partes do modelo. Deste modo, este é um uso comum:

 # Get your gradients after training
loss_value, grads = grad(model, features, labels)

# Apply some clipping
grads = [tf.clip_by_norm(g, norm)
             for g in grads]

# Continue on with training
optimizer.apply_gradients(grads)
 

t A Tensor ou IndexedSlices . Este deve ser um tipo de ponto flutuante.
clip_norm A 0-D (escalar) Tensor > 0. Um valor máximo de recorte, ponto também flutuante
axes Um 1-D (vector) Tensor de tipo int32 contendo as dimensões a ser usado para calcular a L2-norma. Se None (o padrão), usa todas as dimensões.
name Um nome para a operação (opcional).

A grampeado Tensor ou IndexedSlices .

ValueError Se o tensor clip_norm não é um tensor escalar 0-D.
TypeError Se dtipo da entrada não é um ponto flutuante ou tipo complexo.