torch.nn.utils.prune.l1_unstructured(module, name, amount, importance_scores=None)
参数:
-
module(torch.nn.Module) -包含要修剪的张量的模块
-
name(str) -
module
中的参数名称,将对其进行修剪。 -
amount(int或者float) -要修剪的参数数量。如果
float
,应介于 0.0 和 1.0 之间,表示要修剪的参数比例。如果int
,它表示要修剪的参数的绝对数量。 -
importance_scores(torch.Tensor) -用于计算剪枝掩码的重要性分数(与模块参数形状相同)的张量。此张量中的值表示正在修剪的参数中相应元素的重要性。如果未指定或无,将使用模块参数代替它
返回:
返回类型:
输入模块的修改(即修剪)版本
模块(nn.Module)
通过删除具有最低 L1 范数的(当前未修剪的)单元的指定 amount
,修剪与 module
中名为 name
的参数对应的张量。通过以下方式修改模块(并返回修改后的模块):
-
添加一个名为
name+'_mask'
的命名缓冲区,该缓冲区对应于通过修剪方法应用于参数name
的二进制掩码。 -
将参数
name
替换为其修剪版本,而原始(未修剪)参数存储在名为name+'_orig'
的新参数中。
>>> m = prune.l1_unstructured(nn.Linear(2, 3), 'weight', amount=0.2)
>>> m.state_dict().keys()
odict_keys(['bias', 'weight_orig', 'weight_mask'])