torch.nn.utils.prune.global_unstructured
-
torch.nn.utils.prune.global_unstructured(parameters, pruning_method, importance_scores=None, **kwargs)[исходный код] -
Выполняет глобальное прореживание тензоров, соответствующих всем параметрам в
parameters, применяя указанныйpruning_method.Изменяет модули на месте, выполняя следующие действия:
- добавляет именованный буфер с именем
name+'_mask', соответствующий двоичной маске, применённой методом прореживания к параметруname. - заменяет параметр
nameего прореженной версией, сохраняя исходный (непрореженный) параметр в новом параметре с именемname+'_orig'.
- Параметры:
-
-
parameters (Iterable из (module, name) кортежей) – параметры модели для глобального прореживания, то есть путём объединения всех весов до принятия решения о том, какие из них проредить. module должен иметь тип
nn.Module, а name должен быть строкой. -
pruning_method (function) – допустимая функция прореживания из этого модуля или пользовательская функция, соответствующая рекомендациям по реализации и имеющая
PRUNING_TYPE='unstructured'. - importance_scores (dict) – словарь, сопоставляющий кортежи (module, name) с тензорами оценок важности соответствующих параметров. Тензор должен иметь ту же форму, что и параметр, и используется для вычисления маски прореживания. Если значение не задано или равно None, вместо оценок важности будет использоваться сам параметр.
-
kwargs – другие именованные аргументы, например: amount (int или float) — количество параметров для прореживания среди указанных параметров. Если
float, значение должно находиться в диапазоне от 0.0 до 1.0 и обозначать долю параметров для прореживания. Еслиint, оно обозначает абсолютное количество параметров для прореживания.
-
parameters (Iterable из (module, name) кортежей) – параметры модели для глобального прореживания, то есть путём объединения всех весов до принятия решения о том, какие из них проредить. module должен иметь тип
- Вызывает исключение:
-
TypeError – если
PRUNING_TYPE != 'unstructured'
Примечание
Поскольку глобальное структурированное прореживание не имеет особого смысла, если норма не нормализована по размеру параметра, теперь область применения глобального прореживания ограничена неструктурированными методами.
Примеры
>>> from torch.nn.utils import prune >>> from collections import OrderedDict >>> net = nn.Sequential( ... OrderedDict( ... [ ... ("first", nn.Linear(10, 4)), ... ("second", nn.Linear(4, 1)), ... ] ... ) ... ) >>> parameters_to_prune = ( ... (net.first, "weight"), ... (net.second, "weight"), ... ) >>> prune.global_unstructured( ... parameters_to_prune, ... pruning_method=prune.L1Unstructured, ... amount=10, ... ) >>> print(sum(torch.nn.utils.parameters_to_vector(net.buffers()) == 0)) tensor(10) - добавляет именованный буфер с именем
© 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.prune.global_unstructured.html