torch.nn.utils.parametrizations.spectral_norm
-
torch.nn.utils.parametrizations.spectral_norm(module, name='weight', n_power_iterations=1, eps=1e-12, dim=None)[source] -
Применяет спектральную нормализацию к параметру в заданном модуле.
При применении к вектору она упрощается до
Спектральная нормализация стабилизирует обучение дискриминаторов (критиков) в генеративных состязательных сетях (GAN) путём уменьшения липшицевой постоянной модели. аппроксимируется путём выполнения одной итерации метода степенного метода каждый раз при обращении к весу. Если размер тензора весов больше 2, он преобразуется в 2D в методе степенного итерации для получения спектральной нормы.
См. Спектральная нормализация для генеративных состязательных сетей.
Примечание
Эта функция реализована с использованием функциональности параметризации в
register_parametrization(). Это повторная реализацияtorch.nn.utils.spectral_norm().Примечание
При регистрации этого ограничения оцениваются сингулярные векторы, соответствующие наибольшему сингулярному значению, а не случайному выбору. Затем они обновляются путём выполнения
n_power_iterationsитераций метода степенного метода, когда тензор обращается с модулем в режимеtraining.Примечание
Если модуль
_SpectralNorm, то естьmodule.parametrization.weight[idx], находится в режиме обучения при удалении, он выполнит ещё одну итерацию степенного метода. Если вы хотите избежать этой итерации, установите режим модуля в eval перед его удалением.- Параметры
-
- 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>)
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.nn.utils.parametrizations.spectral_norm.html