深度学习笔记(九):神经网络剪枝(Neural Network Pruning)详细介绍

简介: 神经网络剪枝是一种通过移除不重要的权重来减小模型大小并提高效率的技术,同时尽量保持模型性能。

1:What is pruning

剪枝是一种模型压缩的方法,这种方法可以有效的裁剪模型参数且最小化精度的损失。由于深度学习模型可以看作是一个复杂树状结构,如果能减去一些对结果没什么影响的旁枝,也就是修剪神经网络中不重要的权重,就可以实现模型的减小。比如说看下图

在这里插入图片描述 在这里插入图片描述

我们通过观察这个函数发现有些项对应的系数是很小的,也就是说对于拟合的贡献不是很大,如果我们把系数小的去掉得到-1.2x^2-2x-8的式子,得到下图

在这里插入图片描述

这时候我们可以观察到这时候拟合出来的效果它的泛化能力更好,更加不会过拟合。这也是剪枝的最基本的原理,总而言之就是把不重要的参数去掉。

2:Pruning in MLP(多层感知机)

在多层感知机中,剪枝也就是减去不重要的权重,也就是近似为0的权重。

在这里插入图片描述

拿到最初的权重矩阵之后,在生成一个叫掩码的矩阵,也就是说如果原来的权重比较接近于0,我们就把它的掩码置为0,最后在通过原来的权重矩阵乘以掩码矩阵就可以得到新的矩阵。新的参数矩阵对应的就是上面这个连接图,没有连的就相当于被置0了。

2.2 How to make mask

在这里插入图片描述
numpy里面的这个函数相当方便,percentile:一组n个观测值从小到大排序,处于p%位置的值称第p百分位数。

也就是说通过np.abs()求完绝对值后,在通过np.percentile(,50)减去50%没必要的权重,后面得到的0.6意思是小于0.6的权重将被剪掉,被置为0.

3.Pruning in CNN(卷积神经网络)

在这里插入图片描述
中间是4个卷积核,左边是输入的特征图,右边是输出的特征图,输入的特征图对每个卷积核都进行一个卷积,中间黑色的部分是我们观察到这个卷积核的参数特别的小,置为0之后将会对output产生影响,也就是有1/4的部分都为0.和上面一样也需要设置一个mask,然后去计算每个卷积核的L2范数,如果小的话直接去掉,去掉的话就是直接乘以mask

目录
相关文章
|
2月前
|
机器学习/深度学习 存储 PyTorch
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
Neural ODE将神经网络与微分方程结合,用连续思维建模数据演化,突破传统离散层的限制,实现自适应深度与高效连续学习。
159 3
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
|
3月前
|
XML JSON JavaScript
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
122 0
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
1303 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
机器学习/深度学习 算法 测试技术
深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
本文是关于如何搭建深度学习环境,特别是使用mmdetection进行CPU安装和训练的详细指南。包括安装Anaconda、创建虚拟环境、安装PyTorch、mmcv-full和mmdetection,以及测试环境和训练目标检测模型的步骤。还提供了数据集准备、检查和网络训练的详细说明。
881 5
深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
363 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
机器学习/深度学习
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
本文探讨了深度可分离卷积和空间可分离卷积,通过代码示例展示了它们在降低计算复杂性和提高效率方面的优势。
2958 2
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
|
机器学习/深度学习 并行计算 PyTorch
深度学习环境搭建笔记(一):detectron2安装过程
这篇博客文章详细介绍了在Windows环境下,使用CUDA 10.2配置深度学习环境,并安装detectron2库的步骤,包括安装Python、pycocotools、Torch和Torchvision、fvcore,以及对Detectron2和PyTorch代码的修改。
2940 1
深度学习环境搭建笔记(一):detectron2安装过程
|
机器学习/深度学习 编解码 算法
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
MobileNetV3是谷歌为移动设备优化的神经网络模型,通过神经架构搜索和新设计计算块提升效率和精度。它引入了h-swish激活函数和高效的分割解码器LR-ASPP,实现了移动端分类、检测和分割的最新SOTA成果。大模型在ImageNet分类上比MobileNetV2更准确,延迟降低20%;小模型准确度提升,延迟相当。
483 1
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
|
机器学习/深度学习 算法 PyTorch
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
这篇文章详细介绍了多种用于目标检测任务中的边界框回归损失函数,包括IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU和WIOU,并提供了它们的Pytorch实现代码。
2775 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
308 1
目标检测笔记(一):不同模型的网络架构介绍和代码

热门文章

最新文章