Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

tf.clip_by_norm

TensorFlow 1 wersja Zobacz źródło na GitHub

Klipy tensora wartości maksymalnej L2-normy.

Stosowany w notebookach

Używany w przewodniku

Biorąc tensora t , a wartość maksymalna klips clip_norm operacja ta normalizuje t tak, że jej norma L2 jest mniejsze niż lub równe do clip_norm wzdłuż wymiarach podanych w axes . W szczególności, w przypadku, w którym domyślny wszystkie wymiary są wykorzystywane do obliczenia, gdy L2 normą t jest już mniejsza niż lub równą clip_norm , a t nie ulega zmianie. Jeśli L2 normą jest większa niż clip_norm , to proces wraca tensora tego samego typu i kształtu jak t z jego wartości możliwości:

t * clip_norm / l2norm(t)

W tym przypadku, L2-norma tensora wyjściowym jest clip_norm .

Jako inny przykład, w przypadku t jest macierzą, a axes == [1] , to każdy wiersz wyjściu nie będzie L2-norm mniej niż lub równą clip_norm . Jeśli axes == [0] natomiast każda z kolumn wyjścia będzie obcięta.

Przykładowy kod:

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)

Operacja ta jest zwykle stosowane do zaciskania gradientów przed ich zastosowaniem z Optimizer. Większość danych gradient zbiór różnych kształtach tensorów różnych części modelu. Tak więc, jest to powszechne użycie:

 # 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 Tensor lub IndexedSlices . To musi być pływające typu punkt.
clip_norm A 0-D (skalarne) Tensor > 0 Wartość maksymalna obcinania punkt również pływający
axes Do 1-D (wektor) Tensor typu Int32 zawierający wymiary użyć do obliczania L2-normy. Jeśli None (ustawienie domyślne), wykorzystuje wszystkie wymiary.
name Nazwę operacji (opcjonalnie).

Obcięty Tensor lub IndexedSlices .

ValueError Jeśli tensor clip_norm nie jest 0-D skalarne tensor.
TypeError Jeśli dtype wejścia nie jest zmiennoprzecinkowych lub typu złożonego.