tf.clip_by_global_norm
Ограничивает значения нескольких тензоров в соответствии с отношением суммы их норм.
tf.clip_by_global_norm(
t_list, clip_norm, use_norm=None, name=None
)
Для кортежа или списка тензоров t_list и коэффициента ограничения clip_norm эта операция возвращает список ограниченных тензоров list_clipped и глобальную норму (global_norm) всех тензоров в t_list. При необходимости, если вы уже вычислили глобальную норму для t_list, можно указать её с помощью use_norm.
Для выполнения ограничения значения t_list[i] задаются следующим образом:
t_list[i] * clip_norm / max(global_norm, clip_norm)
где:
global_norm = sqrt(sum([l2norm(t)**2 for t in t_list]))
Если clip_norm > global_norm, элементы в t_list остаются без изменений, в противном случае все они уменьшаются в соответствии с глобальным коэффициентом.
Если global_norm == infinity, все элементы в t_list устанавливаются в NaN, чтобы сообщить о возникновении ошибки.
Элементы t_list типа None игнорируются.
Это правильный способ ограничения градиента (Pascanu et al., 2012).
Однако он медленнее, чем clip_by_norm(), поскольку все параметры должны быть готовы до выполнения операции ограничения.
| Аргументы | |
|---|---|
t_list | Кортеж или список значений смешанных типов Tensors, IndexedSlices или None. |
clip_norm | Tensor нулевой размерности (скаляр) > 0. Коэффициент ограничения. |
use_norm | Tensor нулевой размерности (скаляр) типа float (необязательно). Используемая глобальная норма. Если она не указана, для вычисления нормы используется global_norm(). |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
list_clipped | Список значений Tensors того же типа, что и list_t. |
global_norm | Tensor нулевой размерности (скаляр), представляющий глобальную норму. |
| Вызывает исключение | |
|---|---|
TypeError | Если t_list не является последовательностью. |
| Ссылки | |
|---|---|
| О сложности обучения рекуррентных нейронных сетей: Pascanu et al., 2012 (PDF) |
© 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_global_norm