【深度学习】卷积神经网络结构组成与解释

卷积神经网络是以卷积层为主的深度网路结构,网络结构包括有卷积层、激活层、BN层、池化层、FC层、损失层等。卷积操作是对图像和滤波矩阵做内积(元素相乘再求和)的操作。

1. 卷积层

常见的卷积操作如下:

卷积操作解释图解
标准卷积一般采用3x3、5x5、7x7的卷积核进行卷积操作。卷积神经网络结构组成与解释
分组卷积将输入特征图按通道均分为 x 组,然后对每一组进行常规卷积,最后再进行合并。卷积神经网络结构组成与解释
空洞卷积为扩大感受野,在卷积核里面的元素之间插入空格来“膨胀”内核,形成“空洞卷积”(或称膨胀卷积),并用膨胀率参数L表示要扩大内核的范围,即在内核元素之间插入L-1个空格。当L=1时,则内核元素之间没有插入空格,变为标准卷积。卷积神经网络结构组成与解释
深度可分离卷积深度可分离卷积包括为逐通道卷积和逐点卷积两个过程。卷积神经网络结构组成与解释

(通道卷积,2D标准卷积)

卷积神经网络结构组成与解释

(逐点卷积,1x1卷积)

反卷积属于上采样过程,“反卷积”是将卷积核转换为稀疏矩阵后进行转置计算。卷积神经网络结构组成与解释
可变形卷积指标准卷积操作中采样位置增加了一个偏移量offset,如此卷积核在训练过程中能扩展到很大的范围。卷积神经网络结构组成与解释

补充:

1 x 1卷积即用1 x 1的卷积核进行卷积操作,其作用在于升维与降维。升维操作常用于chennel为1(即是通道数为1)的情况下,降维操作常用于chennel为n(即是通道数为n)的情况下。

降维:通道数不变,数值改变。

卷积神经网络结构组成与解释

升维:通道数改变为kernel的数量(即为filters),运算本质可以看为全连接。

卷积神经网络结构组成与解释

卷积计算在深度神经网络中的量是极大的,压缩卷积计算量的主要方法如下:

序号方法
1采用多个3x3卷积核代替大卷积核(如用两个3 x 3的卷积核代替5 x 5的卷积核)
2采用深度可分离卷积(分组卷积)
3通道Shuffle
4Pooling层
5Stride = 2
6等等

2. 激活层

介绍:为了提升网络的非线性能力,以提高网络的表达能力。每个卷积层后都会跟一个激活层。激活函数主要分为饱和激活函数(sigmoid、tanh)与非饱和激活函数(ReLU、Leakly ReLU、ELU、PReLU、RReLU)。非饱和激活函数能够解决梯度消失的问题,能够加快收敛速度。

常用函数:ReLU函数、Leakly ReLU函数、ELU函数等

 

卷积神经网络结构组成与解释

ReLU函数

卷积神经网络结构组成与解释

Leakly ReLU函数

卷积神经网络结构组成与解释

ELU函数

3. BN层(BatchNorm)

介绍:通过一定的规范化手段,把每层神经网络任意神经元的输入值的分布强行拉回到均值为0,方差为1的标准正态分布。BatchNorm是归一化的一种手段,会减小图像之间的绝对差异,突出相对差异,加快训练速度。但不适用于image-to-image以及对噪声明感的任务中。

常用函数:BatchNorm2d

pytorch用法:nn.BatchNorm2d(num_features, eps, momentum, affine)

num_features:一般输入参数为batch_sizenum_featuresheight*width,即为其中特征的数量。

eps:分母中添加的一个值,目的是为了计算的稳定性,默认为:1e-5。momentum:一个用于运行过程中均值和方差的一个估计参数(我的理解是一个稳定系数,类似于SGD中的momentum的系数)。

affine:当设为true时,会给定可以学习的系数矩阵gamma和beta。

4. 池化层(pooling)

介绍:pooling一方面使特征图变小,简化网络计算复杂度。一方面通过多次池化压缩特征,提取主要特征。属于下采样过程

常用函数:Max Pooling(最大池化)、Average Pooling(平均池化)等。

MaxPooling 与 AvgPooling用法:1. 当需综合特征图上的所有信息做相应决策时,通常使用AvgPooling,例如在图像分割领域中用Global AvgPooling来获取全局上下文信息;在图像分类中在最后几层中会使用AvgPooling。2. 在图像分割/目标检测/图像分类前面几层,由于图像包含较多的噪声和目标处理无关的信息,因此在前几层会使用MaxPooling去除无效信息。

 

卷积神经网络结构组成与解释

补充:上采样层重置图像大小为上采样过程,如Resize,双线性插值直接缩放,类似于图像缩放,概念可见最邻近插值算法和双线性插值算法。实现函数有nn.functional.interpolate(input, size = None, scale_factor = None, mode = ‘nearest’, align_corners = None)和nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride = 1, padding = 0, output_padding = 0, bias = True)

5. FC层(全连接层)

介绍:连接所有的特征,将输出值送给分类器。主要是对前层的特征进行一个加权和(卷积层是将数据输入映射到隐层特征空间),将特征空间通过线性变换映射到样本标记空间(label)。全连接层可以通过1 x 1卷机 global average pooling代替。可以通过全连接层参数冗余,全连接层参数和尺寸相关。

常用函数:nn.Linear(in_features, out_features, bias)

卷积神经网络结构组成与解释

补充:分类器包括线性分类器与非线性分类器。

分类器介绍常见种类优缺点
线性分类器线性分类器就是用一个“超平面”将正、负样本隔离开LR、Softmax、贝叶斯分类、单层感知机、线性回归、SVM(线性核)等线性分类器速度快、编程方便且便于理解,但是拟合能力低
非线性分类器非线性分类器就是用一个“超曲面”或者多个超平(曲)面的组合将正、负样本隔离开(即,不属于线性的分类器)决策树、RF、GBDT、多层感知机、SVM(高斯核)等非线性分类器拟合能力强但是编程实现较复杂,理解难度大

6. 损失层

介绍:设置一个损失函数用来比较网络的输出和目标值,通过最小化损失来驱动网络的训练。网络的损失通过前向操作计算,网络参数相对于损失函数的梯度则通过反向操作计算。

常用函数:分类问题损失(离散值:分类问题、分割问题):nn.BCELoss、nn.CrossEntropyLoss等。回归问题损失(连续值:推测问题、回归分类问题):nn.L1Loss、nn.MSELoss、nn.SmoothL1Loss等。

7. Dropout层

介绍:在不同的训练过程中随机扔掉一部分神经元,以防止过拟合,一般用在全连接层。在测试过程中不使用随机失活,所有的神经元都激活。

常用函数:nn.dropout

8. 优化器

介绍:为了更高效的优化网络结构(损失函数最小),即是网络的优化策略,主要方法如下:

解释优化器种类特点
基于梯度下降原则(均使用梯度下降算法对网络权重进行更新,区别在于使用的样本数量不同)GD(梯度下降); SGD(随机梯度下降,面向一个样本); BGD(批量梯度下降,面向全部样本); MBGD(小批量梯度下降,面向小批量样本)引入随机性和噪声
基于动量原则(根据局部历史梯度对当前梯度进行平滑)Momentum(动量法); NAG(Nesterov Accelerated Gradient)加入动量原则,具有加速梯度下降的作用
自适应学习率(对于不同参数使用不同的自适应学习率;Adagrad使用梯度平方和、Adadelta和RMSprop使用梯度一阶指数平滑,RMSprop是Adadelta的一种特殊形式、Adam吸收了Momentum和RMSprop的优点改进了梯度计算方式和学习率)Adagrad; Adadelta; RMSprop; Adam自适应学习

常用优化器为Adam,用法为:torch.optim.Adam。

补充:卷积神经网络正则化是为减小方差,减轻过拟合的策略,方法有:L1正则(参数绝对值的和); L2正则(参数的平方和,weight_decay:权重衰退)。

9. 学习率

介绍:学习率作为监督学习以及深度学习中重要的超参,其决定着目标函数能否收敛到局部最小值以及合适收敛到最小值。合适的学习率能够使目标函数在合适的时间内收敛到局部最小值。

常用函数:torch.optim.lr_scheduler; ExponentialLR; ReduceLROnplateau; CyclicLR等。


 

卷积神经网络的常见结构

常见结构有:跳连结构(ResNet)、并行结构(Inception V1-V4即GoogLeNet)、轻量型结构(MobileNetV1)、多分支结构(SiameseNet; TripletNet; QuadrupletNet; 多任务网络等)、Attention结构(ResNet Attention)

结构介绍与特点图示
跳连结构(代表:ResNet)2015年何恺明团队提出。引入跳连的结构来防止梯度消失问题,今儿可以进一步加大网络深度。扩展结构有:ResNeXt、DenseNet、WideResNet、ResNet In ResNet、Inception-ResNet等卷积神经网络结构组成与解释
并行结构(代表:Inception V1-V4)2014年Google团队提出。不仅强调网络的深度,还考虑网络的宽度。其使用1×1的卷积来进行升降维,在多个尺寸上同时进行卷积再聚合。其次利用稀疏矩阵分解成密集矩阵计算的原理加快收敛速度。卷积神经网络结构组成与解释
轻量型结构(代表:MobileNetV1)2017年Google团队提出。为了设计能够用于移动端的网络结构,使用Depth-wise Separable Convolution的卷积方式代替传统卷积方式,以达到减少网络权值参数的目的。扩展结构有:MobileNetV2、MobileNetV3、SqueezeNet、ShuffleNet V1、ShuffleNet V2等卷积神经网络结构组成与解释
多分支结构(代表:TripletNet)基于多个特征提取方法提出,通过比较距离来学习有用的变量。该网络由3个具有相同前馈网络(共享参数)组成的,需要输入是3个样本,一个正样本和两个负样本,或者一个负样本和两个正样本。训练的目标是让相同类别之间的距离竟可能的小,让不同的类别之间距离竟可能的大。常用于人脸识别。卷积神经网络结构组成与解释
Attention结构(代表:ResNet Attention)对于全局信息,注意力机制会重点关注一些特殊的目标区域,也就是注意力焦点,进而利用有限的注意力资源对信息进行筛选,提高信息处理的准确性和效率。注意力机制有Soft-Attention和Hard-Attention区分,可以作用在特征图上、尺度空间上、channel尺度上和不同时刻历史特征上等。卷积神经网络结构组成与解释

参考资料链接:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/169295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

总结Vue3里一些常见的组合式api

一:前言 二:常见api 1、ref 和 reactive 这两个组合式 api 是在 Vue3 开发中最为常见的两个 api ,主要是将一个非响应式的数据变为响应式数据。 ref作用: 定义一个数据的响应式 语法: const xxx ref(initValue):创建一个包含响应式数据的引…

案例024:基于微信小程序的汽车保养系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

基于ThinkPHP8 + Vue3 + element-ui-plus + 微信小程序(原生) + Vant2 的 BBS论坛系统设计【PHP课设】

一、BBS论坛功能描述 我做的是一个论坛类的网页项目,每个用户可以登录注册查看并发布文章,以及对文章的点赞和评论,还有文件上传和个人签名发布和基础信息修改,管理员对网站的数据进行统计,对文章和文件的上传以及评论…

MobileNets发展

写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 引言MobileNetsMobileNet - V1思想代码实现 MobileNet - V2思想代码实现 MobileNet - …

学习openGauss

学习openGauss 了解openGauss openGauss内核源自PostgreSQL,并着重在架构、事务、存储引擎、优化器等方向持续构建竞争力特性,在ARM架构的芯片上深度优化,并兼容X86架构。实现以下技术特点: 基于多核架构的并发控制技术、NUMA-…

基于协作搜索算法优化概率神经网络PNN的分类预测 - 附代码

基于协作搜索算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于协作搜索算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于协作搜索优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

P8873 梅莉的市场经济学

二分题目,难在对细节的把握,改起来很容易烦躁,不想改了,重在坚持,边界问题改起来确实麻烦,注意一下就可以 #include<bits/stdc.h> #include<unordered_map> #include<unordered_set> #define int int64_t using namespace std; signed main() {ios::sync_w…

elasticsearch Connection reset by peer如何处理

如何处理&#xff1a; 代码的心跳代码删除&#xff0c;服务linux内核参数修改 客户端时间要小于服务端时间#异常代码 public RestHighLevelClient elasticsearchClient() {// 初始化 RestClient, hostName 和 port 填写集群的内网 IP 地址与端口 // String[] hosts nod…

气膜厂家如何确保质量?

气膜厂家是专门生产和销售气膜产品的企业&#xff0c;需要对产品的质量进行有效管理和控制&#xff0c;以确保产品能够满足客户的需求和期望。下面将从生产过程、质量控制手段和售后服务等方面介绍气膜厂家如何确保产品质量。 起初&#xff0c;气膜厂家需要建立完善的质量管理…

MIT6.824-Raft笔记:Raft初探、副本间log时序

从宏观角度说明raft在程序中的作用&#xff0c;和客户端的关系&#xff0c;以及多个副本之间的关系&#xff1b;从微观角度说明多个副本之间raft对日志处理的流程。 1. Raft 初探 宏观角度说明raft在程序中的作用&#xff0c;和客户端的关系&#xff0c;以及多个副本之间的关…

项目环境配置 本地/测试/预发/生产

在本地目录下新建文件 dev测试环境 development 本地开发环境 production 生产环境 uat预发布环境 .env.dev VUE_APP_API_PATH /api # 测试 VUE_APP_API_PATH http:// # 生成dist名称 VUE_APP_DIST dist_dev .env.development # 本地开发环境 VUE_APP_API_PATH…

探究Kafka原理-3.生产者消费者API原理解析

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44…

续新的SSL证书

一、重新申请证书并下载证书&#xff1a; https://www.ename.net/ 二、IIS中在【服务器证书】中删除旧的证书&#xff0c;导入新的证书&#xff1b; 三、在站点的绑定选择新证书&#xff1b;

力控软件与多台PLC之间ModbusTCP/IP无线通信

Modbus TCP/IP 是对成熟的 Modbus 协议的改编&#xff0c; 因其开放性、简单性和广泛接受性而在工业自动化系统中发挥着举足轻重的作用。它作为连接各种工业设备的通用通信协议&#xff0c;包括可编程逻辑控制器 (PLC)、远程终端单元 (RTU) 和传感器。它提供标准化的 TCP 接口&…

互联网时代的身份标识有哪些?

在互联网时代&#xff0c;我们的在线活动几乎都与IP地址相关。无论是浏览网页、观看视频&#xff0c;还是进行在线交易和沟通交流&#xff0c;我们的设备都会分配到一个独特的IP地址。然而&#xff0c;你可能并未意识到的是&#xff0c;IP地址不仅标识了我们在网络中的身份&…

python每日一题——5盛最多的水

题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容器。…

[UE4][C++]基于UUserWidget的一种序列图播放方法

最近在做一个大项目&#xff0c;鸽了几个月了....... 一、传统方法Flipbook 这种方法适合序列图较少的情况下、可以一个一个添加进来然后调整顺序。蓝图也比较友好可以直接设置很多属性和功能。这里简单了解一下即可&#xff0c;想要深入了解的同学可以自行搜索。 1.1创建Fli…

代码随想录算法训练营第17天|● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和

110. 平衡二叉树 简单 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1&#xff1a; [图片] 输入&#xff1a;root [3,9,20,null…

c++11新特性篇-可调用对象包装器, 绑定器

可调用对象包装器, 绑定器 可调用对象 可调用对象是指在 C 中能够像函数一样被调用的实体。它包括了多种类型的对象&#xff0c;使得它们能够像函数一样被调用&#xff0c;可以是函数、函数指针、函数对象、Lambda 表达式等。在C中&#xff0c;具有以下特征之一的实体都被认为…

Unity 讯飞 之 讯飞星火大模型的简单封装和使用(补充讯飞大模型识图功能)

Unity 讯飞 之 讯飞星火大模型的简单封装和使用&#xff08;补充讯飞大模型识图功能&#xff09; 目录 Unity 讯飞 之 讯飞星火大模型的简单封装和使用&#xff08;补充讯飞大模型识图功能&#xff09; 一、简单介绍 二、实现原理 三、注意事项 四、效果预览 五、案例简单…