• 文档 >
  • torch.nn >
  • torch.nn.utils.prune.global_unstructured
快捷键

torch.nn.utils.prune.global_unstructured

torch.nn.utils.prune.global_unstructured(parameters, pruning_method, importance_scores=None, **kwargs)[source][source]

parameters 中所有参数对应的张量进行全局修剪,应用指定的 pruning_method

在原地修改模块:

  1. 添加一个名为 name+'_mask' 的命名缓冲区,对应于通过剪枝方法应用于参数 name 的二进制掩码。

  2. 将参数 name 替换为其剪枝版本,同时将原始(未剪枝)参数存储在名为 name+'_orig' 的新参数中。

参数:
  • 参数((模块,名称)元组的可迭代集合)- 以全局方式剪枝的模型参数,即通过聚合所有权重来决定哪些权重要剪枝。模块必须是类型 nn.Module ,名称必须是一个字符串。

  • pruning_method(函数)- 来自此模块的有效剪枝函数,或用户实现的满足实现指南并具有 PRUNING_TYPE='unstructured' 的自定义函数。

  • importance_scores(字典)- 将(模块,名称)元组映射到相应参数的重要性得分张量。张量应与参数具有相同的形状,用于计算剪枝的掩码。如果未指定或为 None,则使用参数本身代替其重要性得分。

  • kwargs - 其他关键字参数,例如:amount(整数或浮点数):在指定参数中剪枝的参数数量。如果为 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)

© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,并使用 Read the Docs 提供的主题。

文档

PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

查找开发资源并获得您的疑问解答

查看资源