Neural network 大型神经网络剪枝

Neural network 大型神经网络剪枝,neural-network,pytorch,pruning,Neural Network,Pytorch,Pruning,我做了一些神经网络修剪的实验,但只在小模型上。我曾经按照如下方式修剪相关权重(与官方教程中的解释类似): 这样做的主要问题是,我必须定义一个要修剪的层列表(或元组)。当我手工定义我的模型,并且我知道不同层的名称时(例如,在提供的代码中,我知道所有完全连接的层的名称中都有字符串“layer”) 我如何避免这个过程,并定义一个修剪方法来修剪给定模型的所有参数,而不必按名称调用层 总之,我在寻找一个函数,给定一个模型和一个稀疏常数,全局修剪给定的模型(通过屏蔽它): for name,module i

我做了一些神经网络修剪的实验,但只在小模型上。我曾经按照如下方式修剪相关权重(与官方教程中的解释类似):

这样做的主要问题是,我必须定义一个要修剪的层列表(或元组)。当我手工定义我的模型,并且我知道不同层的名称时(例如,在提供的代码中,我知道所有完全连接的层的名称中都有字符串“layer”)

我如何避免这个过程,并定义一个修剪方法来修剪给定模型的所有参数,而不必按名称调用层

总之,我在寻找一个函数,给定一个模型和一个稀疏常数,全局修剪给定的模型(通过屏蔽它):

for name,module in model.named_modules():
    if 'layer' in name:
        parameters_to_prune.append((getattr(model, name),'weight'))


prune.global_unstructured(
    parameters_to_prune,
    pruning_method=prune.L1Unstructured,
    amount=sparsity_constant,
    )
model = models.ResNet18()
function_that_prunes(model, sparsity_constant)