当前位置: 首页 > news >正文

模型压缩:剪枝

剪枝:基于深度神经网络他有大量的参数量,才能达到SOTA,但是仿照生物的神经网络,将稠密的神经连接变为稀疏的也能达到SOTA效果。

举例模型

class LeNet(nn.Module): def __init__(self): super(LeNet, self).__init__() # 1: 图像的输入通道(1是黑白图像), 6: 输出通道数量, 3 * 3: 卷积核的尺寸 self.conv1 = nn.Conv2d(1, 6, 3) self.conv2 = nn.Conv2d(6, 16, 3) self.fc1 = nn.Linear(16 * 5 * 5, 120) self.fc2 = nn.Linear(120, 84) self.fc3 = nn.Linear(84, 10) def forward(self, x): x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2)) x = F.max_pool2d(F.relu(self.conv2(x)), 2) x = x.view(-1, int(x.nelement() / x.shape[0])) x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) return x

1、无结构化的剪枝(随机剪枝):

# module = model.conv1 # prune.random_unstructured(module, name="weight", amount=0.3) # print(list(module.named_parameters())) # print(list(module.named_buffers()))

这种剪枝方式是随机的剪掉对应层的权值30%

2、无结构化的剪枝(l1剪枝):

# prune.l1_unstructured(module, name="bias", amount=3)

这种剪枝通过L1范数,可以先剪掉对模型贡献最小的那一部分

3、序列化剪枝:

prune.remove(module, 'weight')

首先再剪枝后,会生成weight_orig(存储在缓冲区,模型之前未剪枝前的权重)与weight_mask(掩码,就是那些需要掩码),而weight是他俩个相乘,这就导致降低了效率,并且占用了内存,所以remove以后就不存在这两个了,而是变为weight。

4、结构化剪枝(多参数模块剪枝):

# for name, module in model.named_modules(): # # 对模型中所有的卷积层执行l1_unstructured剪枝操作, 选取20%的参数进行剪枝 # if isinstance(module, torch.nn.Conv2d): # prune.l1_unstructured(module, name="weight", amount=0.2) # # 对模型中所有的全连接层执行ln_structured剪枝操作, 选取40%的参数进行剪枝 # elif isinstance(module, torch.nn.Linear): # prune.ln_structured(module, name="weight", amount=0.4, n=2, dim=0)#bias只有1维没法用结构化剪枝

这样可以处理模型的所有层,不需要一个一个写,但需要注意结构化剪枝是需要多维数据的一维的是不行的

5、全局剪枝:

# # 构建参数集合, 决定哪些层, 哪些参数集合参与剪枝 # parameters_to_prune = ( # (model.conv1, 'weight'), # (model.conv2, 'weight'), # (model.fc1, 'weight'), # (model.fc2, 'weight'), # (model.fc3, 'weight')) # # # 调用prune中的全局剪枝函数global_unstructured执行剪枝操作, 此处针对整体模型中的20%参数量进行剪枝 # prune.global_unstructured(parameters_to_prune, pruning_method=prune.L1Unstructured, amount=0.2) # # # 最后打印剪枝后的模型的状态字典 # print(model.state_dict().keys()) # print( # "Sparsity in conv1.weight: {:.2f}%".format( # 100. * float(torch.sum(model.conv1.weight == 0)) # / float(model.conv1.weight.nelement()) # )) # # print( # "Sparsity in conv2.weight: {:.2f}%".format( # 100. * float(torch.sum(model.conv2.weight == 0)) # / float(model.conv2.weight.nelement()) # )) # # print( # "Sparsity in fc1.weight: {:.2f}%".format( # 100. * float(torch.sum(model.fc1.weight == 0)) # / float(model.fc1.weight.nelement()) # )) # # print( # "Sparsity in fc2.weight: {:.2f}%".format( # 100. * float(torch.sum(model.fc2.weight == 0)) # / float(model.fc2.weight.nelement()) # )) # # print( # "Sparsity in fc3.weight: {:.2f}%".format( # 100. * float(torch.sum(model.fc3.weight == 0)) # / float(model.fc3.weight.nelement()) # )) # # print( # "Global sparsity: {:.2f}%".format( # 100. * float(torch.sum(model.conv1.weight == 0) # + torch.sum(model.conv2.weight == 0) # + torch.sum(model.fc1.weight == 0) # + torch.sum(model.fc2.weight == 0) # + torch.sum(model.fc3.weight == 0)) # / float(model.conv1.weight.nelement() # + model.conv2.weight.nelement() # + model.fc1.weight.nelement() # + model.fc2.weight.nelement() # + model.fc3.weight.nelement()) # ))

他是剪去总体的20%,具体每一层剪多少有参数决定

6、自定义剪枝

http://www.jsqmd.com/news/449792/

相关文章:

  • 网络安全行业300万人才缺口揭秘:零基础也能入行,资深工程师年薪高达150万!
  • 警惕!申博90%的坑,都藏在“低价辅导”里|申博有术教你避坑
  • Qwen3-ASR-0.6B与计算机网络:分布式语音识别系统设计
  • 22年一区Applied Energy独家复现] ‘基于合作博弈模型的多微网间日前研究:实现区...
  • 100吨四柱液压机(全套共86份CAD图纸+使用说明书)
  • 2026选购橡胶辊加工厂,哪家有创新能力且经验丰富、性价比好 - 工业设备
  • AI发展这么快,会不会替代人类的工作?从历史周期到行业现状的深度思考
  • 线程池 ThreadPoolExecutor:Java并发的智能生产线调度系统
  • 网络安全行业现状解析:未来趋势如何?入行是否仍具潜力?
  • 异步沟通术:让全球团队无缝协作——软件测试从业者的专业指南
  • 太原洗浴设计好用机构
  • 2026专业的空气加热器推荐,江苏好用品牌费用多少 - mypinpai
  • 当AI学会“动手“的那一天:2026年3月,科技圈发生了什么?
  • 伦理实战:癌症AI生存概率算法的测试困境与技术破局
  • AI智能体入门指南:从小白到实战收藏,解锁数字员工新机遇!
  • 关键词:分布鲁棒;复现;电气综合能源系统;分布鲁棒机会约束(DRCC);ADMM分布式算法:非...
  • 基于卷积神经网络结合最小二乘支持向量机(CNN-LSSVM)的多输出数据回归预测 CNN-LS...
  • 探讨北京海淀办公空间租赁,弘源首著大厦出租费用怎么算 - 工业推荐榜
  • Java 企业如何平稳落地 AI:从老系统改造到大模型接入的
  • 【月球】卡尔曼滤波器月球陨石坑导航【含Matlab源码 15108期】
  • 基于 python+AI-vue的萨默旅游公司网站设计
  • 2026转行要趁早!盘点网络安全的岗位汇总
  • 深聊麦颂智能运营专业公司 如何选购靠谱的 - myqiye
  • Qwen3-ASR-1.7B部署案例:高校在线课程视频自动生成双语字幕流程
  • 2026年电磁流量计生产厂排名,价格合理又好用的品牌 - 工业品网
  • 2026年四川达州通川:这家‘什么都有’的电器门店凭啥成行业
  • 收藏!小白程序员必看:用本地开源小模型玩转Agent Skill,摆脱闭源API限制
  • 计科毕业设计创新的方向分享
  • 盘点19种网络安全领域职位,你了解几个?网络安全专业必看就业指南
  • 混合动力汽车能量管理策略(基于后向仿真) ①(工况可自行添加); ②仿真图像包括