Spec-Zone.ru › PyTorch 2.14

torch.nn.utils.prune.global_unstructured

torch.nn.utils.prune.global_unstructured(parameters, pruning_method, importance_scores=None, **kwargs) [исходный код]

Выполняет глобальное прореживание тензоров, соответствующих всем параметрам в parameters, применяя указанный pruning_method.

Изменяет модули на месте, выполняя следующие действия:

  1. добавляет именованный буфер с именем name+'_mask', соответствующий двоичной маске, применённой методом прореживания к параметру name.
  2. заменяет параметр 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, оно обозначает абсолютное количество параметров для прореживания.
Вызывает исключение:

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API