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