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

news/2024/11/14 2:05:34/

这里是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/news/1546807.html

相关文章

Linux驱动开发基础——Hello驱动程序(一)

目录 一、Hello驱动 一、Hello驱动 我们选用的内核都是 4.x 版本,操作都是类似的: 1.1、APP 打开的文件在内核中如何表示 open函数原型: int open(const char *pathname, int flags, mode_t mode); 仔细看函数的参数,再对比看 内…

【大数据学习 | HBASE】hbase shell基础实操

1. 查看hbase状态 # 进入hbase 命令行 hbase shell status 我这里没启用高可用hbase 1 active master, 0 backup masters, 2 servers, 1 dead, 1.0000 average load Took 5.2635 seconds 2. 查看版本号 version hbase:002:0> version 2.4.11, r7e672a0da0586e6b7449…

从0开始学习Linux——文件管理

往期目录: 从0开始学习Linux——简介&安装 从0开始学习Linux——搭建属于自己的Linux虚拟机 从0开始学习Linux——文本编辑器 从0开始学习Linux——Yum工具 从0开始学习Linux——远程连接工具 从0开始学习Linux——文件目录 从0开始学习Linux——网络配置 从0开…

机器学习——简单线性回归、逻辑回归

简单线性回归 线性回归用于预测一个连续的数值输出(因变量),其模型假设输入特征(自变量)和输出之间存在线性关系。基本的线性回归模型如下: 损失函数 线性回归通常通过最小二乘法来估计回归系数。最小二乘法…

Anaconda 和 Miniconda

Anaconda 和 Miniconda:讲解与使用指南 目录 什么是 Anaconda 和 Miniconda?Anaconda 和 Miniconda 的区别Anaconda 和 Miniconda 的安装步骤 安装 Anaconda安装 Miniconda 基本使用指南 创建和管理虚拟环境安装和管理包更新和管理 Conda 数据科学工具…

2024.6月GESP一级真题讲解(含视频讲解)

1、2024.6月GESP一级真题代码 //休息时间 #include<bits/stdc.h> using namespace std; int main(){int h,m,s,k;//59cin>>h>>m>>s>>k;//1h60m 1m60s 1h3600 k3600 123/100int mhk/3600h;int mmk/60%60m;int msk%60s;if(ms>60){ms-60;mm1…

服务器硬件介绍

计算机介绍 现在的人们几乎无时无刻都在使用电脑&#xff01;而且已经离不开电脑了。像桌上的台式电脑(桌机)、笔记本电脑(笔电)、平板电脑、智能手机等等&#xff0c;这些东西都算是电脑。 台式机电脑介绍 计算机又被称为电脑。台式机电脑主要分为主机和显示器两个部分&…

软件工程的基础和核心理论概念

软件工程的基础和核心理论概念 引言 软件工程是一门集成了计算机科学、数学、管理科学等多学科理论与方法的综合性学科&#xff0c;旨在研究如何有效地构建和维护高质量的软件系统。本文将详细介绍软件工程的基础和核心理论概念&#xff0c;帮助读者更好地理解和应用这些知识…