Spec-Zone.ru › TensorFlow

tf.clip_by_norm

Ограничивает значения тензора до максимальной нормы 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. Максимальное значение ограничения, также с плавающей запятой. Примечание: если предоставлено отрицательное значение clip_norm, оно будет интерпретировано как ноль.
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/api_docs/python/tf/clip_by_norm

Spec-Zone.ru

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