模型减肥秘籍:模型压缩技术 CNN基础

server/2024/11/18 2:10:49/

这里是Datawhale的组队学习活动,主要介绍的是模型压缩技术。后续将以CNN网络为基础点,带领大家领略模型压缩的魅力。首先是回顾一下一些关于CNN的基础知识。

参考链接:

模型减肥秘籍:模型压缩技术-课程详情 | Datawhale

datawhalechina/leedl-tutorial: 《李宏毅深度学习教程》(李宏毅老师推荐👍,苹果书🍎),PDF下载地址:https://github.com/datawhalechina/leedl-tutorial/releases

CNN介绍

  CNN网络,即卷积神经网络(Convolutional Neural Network),是一类特别为处理具有类似网格结构的数据设计的深度学习网络,比如图像(2D网格)和声音信号(1D网格)。CNN在图像和视频识别、图像分类、医学图像分析等领域取得了显著的成功。

 核心组成

  CNN的核心思想是利用卷积层来自动并有效地提取输入数据的特征,无需手动特征提取。这些特征通过网络的多个层次被逐渐抽象和组合,用以执行分类、检测或分割等任务。CNN通常包含以下类型的层:

  1. 卷积层(Convolutional Layers): 这些层通过卷积运算提取输入数据的局部特征,每个卷积层有多个卷积核(Kernel),能够产生不同的特征图(Feature Maps)。

  2. 激活层(Activation Layers): 通常跟在卷积层后面,引入非线性,使得网络可以学习更加复杂的特征。最常用的激活函数是ReLU(Rectified Linear Unit)。

  3. 池化层(Pooling Layers): 这些层用于降低特征图的空间尺寸,减少后续层的参数数量和计算量,同时使特征检测变得更加稳定。

  4. 全连接层(Fully Connected Layers): 通常位于CNN的末端,将卷积层或池化层输出的高维特征向量转换为最终的输出,如分类标签。

优点

  CNN通过层的叠加和组合,能够自动并有效地从原始数据中学习到有用的特征表示,避免了传统机器学习方法中手工特征提取的繁琐过程。具有如下优点:

  1. 局部连接:卷积层中的神经元仅与输入数据的一个局部区域相连接,这使得网络专注于局部特征,并增强了模型的空间利用率。
  2. 参数共享:通过卷积层中的卷积核重复使用同一组参数,CNN能够以较少的参数量处理大规模输入数据。
  3. 平移不变性:通过池化层,CNN能够对输入数据的小范围平移保持不变性,这对于识别图像中的对象特别重要。

这三个优点其实也对应了图像识别中的三个观察:

观察 1:检测模式不需要整张图像

神经元不需要把整张图像当作输入, 只需要把图像的一小部分当作输入,就足以让它们检测某些特别关键的模式是否出现,而不用采取全连接的方式将整个图像传入神经元。

简化 1:感受野

根据观察1 可以做第1个简化,卷积神经网络会设定一个区域,即感受野(receptive f ield),每个神经元都只关心自己的感受野里面发生的事情。

观察 2:同样的模式可能会出现在图像的不同区域

第2个观察是同样的模式,可能会出现在图像的不同区域。比如说模式鸟嘴,它可能出 现在图像的左上角,也可能出现在图像的中间。

简化 2:共享参数

既然要检测的模式是一样的,只是检测的区域不同,那么其实可以共享神经元的参数。

上面感受野的第1个神经元会跟下面感受野的第1个神经元共 用参数,上面感受野的第2个神经元跟下面感受野的第2个神经元共用参数······ 所以每个 感受野都只有一组参数而已,这些参数称为滤波器(filter)。

接下来通过另一个角度来说明卷积神经网络。一个卷积层里面就是有一排的滤波器,每个滤波器都是一 个3×3×通道,其作用是要去图像里面检测某个模式。这些模式要在3×3×通道,这个小 的范围内,它才能够被这些滤波器检测出来。

滤波器就是一个一个的张量,这些张量里面的数值就是模型里面的参数。这些滤波器里面的 数值其实是未知的,它是可以通过学习找出来的。

第1个版本的故事里面说 到了有一些神经元,这些神经元会共用参数,这些共用的参数就是第2个版本的故事里面的滤波器。

在第1个版本的故事里面,不同的神经元可以共享权重,去守备不同的 范围。而共享权重其实就是用滤波器扫过一张图像,这个过程就是卷积。这就是卷积层名字的来。把滤波器扫过图像就相当于不同的感受野神经元可以共用参数,这组共用的参数就叫做一个滤波器。

观察 3:下采样不影响模式检测

把一张比较大的图像做下采样(downsampling), 把图像偶数的列都拿掉,奇数的行都拿掉,图像变成为原来的1/4,但是不会影响里面是什么东西。例如,把一张大的鸟的图像缩小,这张小的图像还是一只鸟。

简化 3:汇聚

根据第3个观察,汇聚被用到了图像识别中。汇聚没有参数,所以它不是一个层,它里面 没有权重,它没有要学习的东西,汇聚比较像Sigmoid、ReLU等激活函数。因为它里面是没 有要学习的参数的,它就是一个操作符(operator),其行为都是固定好的,不需要根据数据 学任何东西。每个滤波器都产生一组数字,要做汇聚的时候,把这些数字分组,可以2×2个 一组,3×3、4×4也可以,这个是我们自己决定的,图4.27中的例子是2×2个一组。汇聚 有很多不同的版本,以最大汇聚(max pooling)为例。最大汇聚在每一组里面选一个代表, 选的代表就是最大的一个,如图4.28所示。除了最大汇聚,还有平均汇聚(meanpooling), 平均汇聚是取每一组的平均值。

一个经典的CNN网络架构如下,是不是对其中的不同层有了更深理解了呢。


http://www.ppmy.cn/server/142788.html

相关文章

现代密码学|古典密码学例题讲解|AES数学基础(GF(2^8)有限域上的运算问题)| AES加密算法

文章目录 古典密码凯撒密码和移位变换仿射变换例题多表代换例题 AES数学基础(GF(2^8)有限域上的运算问题)多项式表示法 | 加法 | 乘法X乘法模x的四次方1的乘法 AES加密算法初始变换字节代换行移位列混合轮密钥加子密钥&#xff08…

微软出品的一个鼠标控制多台电脑,还能共享剪切板分享与下载

下载链接 点击下载 Mouse Without Borders介绍 Mouse Without Borders 是微软推出的一款软件,它可以让你使用一套鼠标和键盘来控制多台电脑。以下是一些关于 Mouse Without Borders 的关键信息: 多电脑控制:通过 Mouse Without Borders&am…

记录日志中logback和log4j2不能共存的问题

本文章记录设置两个日志时候,控制台直接报错 标黄处就是错误原因:1. SLF4J(W):类路径包含多个SLF4J提供程序。 SLF4J(W):找到提供程序[org.apache.logging.slf4j. net]。 SLF4J(W):找到提供程序[ch.qos.log .classi…

数据分析-系统认识数据分析

目录 数据分析的全貌 观测 实验 应用 数据分析的全貌 观测 实验 应用

【智能化仪表设计】化工仪表及自动化全套课件

目录 第二章 压力测量仪表 第一节: 压力单位 第三章 流量测量仪表 第四节:涡街流量计 第五节:电磁流量计 第四章 物位测量仪表 第三节:电容式物位传感器 第四节:声波式物位仪表 三、预处理系统的设计原则和…

BIO、NIO、AIO的区别?

文章目录 BIO、NIO、AIO的区别?为什么不使用java 原生nio哪些项目使用了netty BIO阻塞I/O存在问题 NIO(nonblocking IO)Java NIO channel(通道)、buffer、selector(选择器) AIO(Asynchronous I/O) BIO、NIO…

FFmpeg 4.3 音视频-多路H265监控录放C++开发十四,总结编码过程,从摄像头获得数据后,转成AVFrame,然后再次转成AVPacket,

也就是将摄像头采集到的YUV 的数据换成 AVFrame,然后再次转成 AVPacket,那么这AVPakcet数据要怎么办呢?分为三种情况: 一种是将AVPacket存储成h264文件,由于h264编码器在将avframe变成avpacket的时候就是按照h264的格…

nginx源码安装配置ssl域名

nginx源码安装 下载 wget http://nginx.org/download/nginx-1.24.0.tar.gz 解压 tar -zxvf nginx-1.24.0.tar.gz 下载openssl apt install openssl 安装nginx cd nginx-1.24.0 sudo apt-get install libpcre3 libpcre3-dev ./configure --prefix=/home/nginx24 --with-http_ss…