Spec-Zone.ru › TensorFlow 2.9

tf.clip_by_norm

Просмотреть исходный код на GitHub

Ограничивает значения тензора до максимальной нормы L2.

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения дополнительной информации.

tf.compat.v1.clip_by_norm

tf.clip_by_norm(
    t, clip_norm, axes=None, name=None
)

Принимая тензор t, и максимальное значение ограничения clip_norm, эта операция нормализует t таким образом, чтобы его норма L2 была меньше или равна clip_norm, по измерениям, указанным в axes. В частности, в случае по умолчанию, где для расчета используются все измерения, если норма L2 t уже меньше или равна clip_norm, то t не изменяется. Если норма L2 больше clip_norm, то эта операция возвращает тензор того же типа и формы, что и t, со значениями, установленными следующим образом:

t * clip_norm / l2norm(t)

В этом случае норма L2 выходного тензора равна clip_norm.

В качестве другого примера, если t является матрицей и axes == [1], то каждая строка выходного значения будет иметь норму L2, меньшую или равную clip_norm. Если axes == [0], каждая колонка выходного значения будет ограничена.

Пример кода:

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)

Эта операция обычно используется для ограничения градиентов перед их применением с оптимизатором. Большинство данных градиента — это набор тензоров различных форм для разных частей модели. Поэтому это распространённое применение:

# 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 или IndexedSlices. Должен быть типа с плавающей точкой.
clip_norm 0-мерный (скалярный) Tensor > 0. Максимальное значение ограничения, также с плавающей точкой.
axes 1-мерный (векторный) Tensor типа int32, содержащий измерения, которые нужно использовать для вычисления нормы L2. Если None (значение по умолчанию), используются все измерения.
name Имя операции (необязательно).
Возвращаемое значение
Ограниченный Tensor или IndexedSlices.
Исключения
ValueError Если тензор clip_norm не является 0-мерным скалярным тензором.
TypeError Если тип данных входных данных не является типом с плавающей или комплексной точкой.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/clip_by_norm

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API