剪枝基础与实战(3): 模型剪枝和稀疏化训练流程

news/2024/10/22 4:46:17/

Model Pruning

在这里插入图片描述

  • 相关论文:Learning Efficient Convolutional Networks through Network Slimming (ICCV 2017)

  • 考虑一个问题,深度学习模型里面的卷积层出来之后的特征有非常多,这里面会不会存在一些没有价值的特征及其相关的连接?又如何去判断一个特征及其连接是否有价值?

先给出答案: 在 Batch Normalize 层的缩放因子上施加 L1 正则化·

优点

  • 不需要对现有 CNN 架构进行任何更改
  • 使用 L1 正则化将 BN 缩放因子的值推向零
    • 使我们能够识别不重要的通道(或神经元),因为每个缩放因子对应于特定的卷积通道(或全连接层的神经元)
    • 这有利于在接下来的步骤中进行通道级剪枝
  • 附加的正则化项很少会损害性能。不仅如此,在某些情况下,它会导致更高的泛化精度
  • 剪枝不重要的通道有时可能会暂时降低性能,但这个效应可以通过接下来的修剪网络的微调来弥补
  • 剪枝后,由此得到的较窄的网络在模型大小、运行时内存和计算操作方面比初始的宽网络更加紧凑。上述过程可以重复几

http://www.ppmy.cn/news/1047081.html

相关文章

(四)、CUDA环境安装与程序编写

1、确定安装版本 1、查看显卡支持的最高CUDA的版本,以便下载对应的CUDA安装包: 安装 NVIDIA 显卡驱动程序、查看当前系统中 NVIDIA 显卡的详细信息:nvidia-smi、 在 "CUDA 版本" 或 "Compute Capability" 部分查找显示的…

服务器CPU飚高排查

排查思路 当正在运行的Java服务导致服务器的CPU突然飙高时,我们该如何排查定位到哪个接口的哪行代码导致CPU飙高的问题呢?我主要提供两个方案: jstackarthas 准备工作 代码准备 现在需要准备一段可以让服务器CPU飙高的代码以及把代码部署…

自动驾驶——车辆动力学模型

/*lat_controller.cpp*/ namespace apollo { namespace control {using apollo::common::ErrorCode;//故障码 using apollo::common::Status;//状态码 using apollo::common::TrajectoryPoint;//轨迹点 using apollo::common::VehicleStateProvider;//车辆状态信息 using Matri…

网络安全领域的常见攻击方式及防御手段

目录 重放攻击(Replay Attack)防御手段 SQL 注入(SQL Injection)防御手段 跨站脚本攻击(Cross-Site Scripting,XSS)防御手段 跨站请求伪造(Cross-Site Request Forgery,C…

Android 13.0 强制app横屏显示

1.概述 在13.0产品定制化开发中,对于处理屏幕旋转方向,首先有kernel底层处理,从底层驱动gsensor 中获取数据,从而判断屏幕方向的,然后事件上报后 最后由WMS就是WindowManagerService 来处理旋转的相关事件 2.强制app横屏显示的核心类 /framework/base/services/java/com…

如何通过MAT排查生产环境服务内存溢出

前言 前段时间,运维反馈生产环境翻译服务某个节点触发内存告警了。运维在重启节点之前,生成了dump快照,这里介绍下如何使用MAT内存分析工具来排查服务内存高占用问题。 MAT简介 MAT是Memory Analyzer的简称,它是一款功能强大的…

为什么终端是1是从1到1的水仙花数呢

为什么终端是1是从1到1的水仙花数呢 #include<stdio.h> #include<math.h> int main() { int a,num_init,num; printf(“请输入水仙花数产生的下限值:”); num_init scanf(" %d", &num_init); printf(“请输入水仙花数产生的上限值:”); a scanf…

无重复字符的最长子串——力扣3

滑动窗口 int lengthOfLongestSubstring(string s){int n=s.size();unordered_set<char