torch.nn.utils.parametrizations.spectral_norm
-
torch.nn.utils.parametrizations.spectral_norm(module, name='weight', n_power_iterations=1, eps=1e-12, dim=None)[исходный код] -
Применяет спектральную нормализацию к параметру указанного модуля.
При применении к вектору выражение упрощается до
Спектральная нормализация стабилизирует обучение дискриминаторов (критиков) в генеративно-состязательных сетях (GAN), уменьшая константу Липшица модели. аппроксимируется одним шагом степенного метода при каждом обращении к весу. Если размерность тензора весов больше 2, в степенном методе итераций он преобразуется в двумерный тензор для вычисления спектральной нормы.
См. статью Спектральная нормализация для генеративно-состязательных сетей .
Примечание
Эта функция реализована с использованием функциональности параметризации в
register_parametrization(). Это повторная реализацияtorch.nn.utils.spectral_norm().Примечание
При регистрации этого ограничения сингулярные векторы, соответствующие наибольшему сингулярному значению, оцениваются, а не выбираются случайным образом. Затем они обновляются с помощью
n_power_iterationsстепенного метода всякий раз, когда происходит обращение к тензору, а модуль находится в режимеtraining.Примечание
Если модуль
_SpectralNorm, то естьmodule.parametrization.weight[idx], при удалении находится в режиме обучения, будет выполнена ещё одна итерация степенного метода. Чтобы избежать этой итерации, перед удалением переключите модуль в режим оценки.- Параметры:
-
- module (nn.Module) – содержащий модуль
-
name (str, необязательный) – имя параметра весов. По умолчанию:
"weight". -
n_power_iterations (int, необязательный) – количество итераций степенного метода для вычисления спектральной нормы. По умолчанию:
1. -
eps (float, необязательный) – эпсилон для численной устойчивости при вычислении норм. По умолчанию:
1e-12. -
dim (int, необязательный) – размерность, соответствующая количеству выходов. По умолчанию:
0, кроме модулей, являющихся экземплярами ConvTranspose{1,2,3}d, для которых это значение равно1
- Возвращает:
-
Исходный модуль с новой параметризацией, зарегистрированной для указанного веса
- Тип возвращаемого значения:
Пример:
>>> snm = spectral_norm(nn.Linear(20, 40)) >>> snm ParametrizedLinear( in_features=20, out_features=40, bias=True (parametrizations): ModuleDict( (weight): ParametrizationList( (0): _SpectralNorm() ) ) ) >>> torch.linalg.matrix_norm(snm.weight, 2) tensor(1.0081, grad_fn=<AmaxBackward0>)
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.nn.utils.parametrizations.spectral_norm.html