当前位置: 首页 > news >正文

卷积神经网络的结构组成与解释(详细介绍)

文章目录

前言

1、卷积层

2、激活层

3、BN层

4、池化层

5、FC层(全连接层)

6、损失层

7、Dropout层

8、优化器

9、学习率

10、卷积神经网络的常见结构


前言

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


1、卷积层

常见的卷积操作如下:

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

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

(逐点卷积,1x1卷积)

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

补充 :

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

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

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

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

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

2、激活层

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

常用函数:ReLU函数、Leaky ReLU函数、ELU函数等。

ReLU函数

Leaky ReLU函数

ELU函数

3、BN层

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

常用函数:BatchNorm2d

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

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

eps:分母中添加的一个值,目的是为了计算的稳定性,默认为:1e-5。

momentum:一个用于运行过程中均值和方差的一个估计参数(我的理解是一个稳定系数,类似于SGD中的momentum的系数)。

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

4、池化层

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

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

Max Pooling 和 Average Pooling用法:

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

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

5、FC层(全连接层)

连接所有的特征,将输出值送给分类器。主要是对前层的特征进行一个加权求和(卷积层是将数据输入映射到隐层特征空间),将特征空间通过线性变换映射到样本标记空间(label)。全连接层可以通过 1x1卷积 + 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等。

10、卷积神经网络的常见结构

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

结构介绍与特点图示
跳连结构(代表:ResNet)2015年何恺明团队提出。引入跳连的结构来防止梯度消失问题,进而可以进一步加大网络深度。扩展结构有:ResNeXt、DenseNet、WideResNet、ResNet In ResNet、Inception-ResNet'等
并行结构(代表:Inception V1-V4)2014年Google团队提出。不仅强调网络的深度,还考虑网络的宽度。其使用1x1的卷积来进行升降维,在多个尺寸上同时进行卷积再聚合。其次利用稀疏矩阵分解成密集矩阵计算的原理加快收敛速度
轻量型结构(代表:MobileNet V1)

2017年Google团队提出。为了设计能够用于移动端的网络结构,使用Depth-wise Separable Convolution的卷积方式代替传统卷积方式,以达到减少网络权值参数的目的。扩展结构有:MobileNetV2、MobileNetV3、SqueezeNet、ShuffleNet V1、ShuffleNet V2等

多分支结构(代表:TripletNet)基于多个特征提取方法提出,通过比较距离来学习有用的变量。该网络由3个具有相同前馈网络(共享参数)组成的,需要输入是3个样本,一个正样本和两个负样本,或者一个负样本和两个正样本。训练的目标是让相同类别之间的距离竟可能的小,让不同的类别之间距离竟可能的大。常用于人脸识别。
Attention结构(代表:ResNet + Attention)对于全局信息,注意力机制会重点关注一些特殊的目标区域,也就是注意力焦点,进而利用有限的注意力资源对信息进行筛选,提高信息处理的准确性和效率。注意力机制有Soft-Attention和Hard-Attention区分,可以作用在特征图上、尺度空间上、channel尺度上和不同时刻历史特征上等。

参考:

小白学视觉

https://www.bilibili.com/video/BV1we4y1X7vy/?spm_id_from=333.880.my_history.page.click&vd_source=8332e741acbb75b438e9c1c91efed022

相关文章:

卷积神经网络的结构组成与解释(详细介绍)

文章目录 前言 1、卷积层 2、激活层 3、BN层 4、池化层 5、FC层(全连接层) 6、损失层 7、Dropout层 8、优化器 9、学习率 10、卷积神经网络的常见结构 前言 卷积神经网络是以卷积层为主的深层网络结构,网络结构包括有卷积层、激活层、BN层、…...

使用ansible的连通性检查的关键参数

使用ansible进行ping命令的时候发现有些不通 ansible cba -m ping 10.1.1.1 | FAILED! > {"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this h…...

Jenkins用maven风格build报错解决过程记录

1、Jenkins2.453新建项目,构建风格选的maven 2、自由风格构建部署没有任何问题,但是maven风格build一直失败,报错如下图 3、解决方案:在系统管理–系统配置–Maven项目配置,删除全局MAVEN_OPT的路径信息,…...

Web3.0与AI的交融:开启智能互联网新时代

目前有140 多个 Web3 AI 概念项目,覆盖了基础设施、数据、预测市场、计算与算力、教育、DeFi & 跨链、安全、NFT & 游戏 & 元宇宙、搜索引擎、社交 & 创作者经济、AI 聊天机器人、DID & 消息传递、治理、医疗、交易机器人等诸多方向。持续关注…...

自动化_Ansible学习笔记

文章目录 Ansible 介绍配置文件主配置文件优先级 常用命令ansible-playbook ad-hocinventory 主机清单Playbook 剧本YAML格式 ansible 模块介绍模块对应功能Commands modules(命令模块)command (命令)shell (外壳) 官方帮助文档 模块索引playbook 开头示例系统类setup (收集远程…...

用于密集视觉冲击的紧凑三维高斯散射Compact 3D Gaussian Splatting For Dense Visual SLAM

Compact 3D Gaussian Splatting For Dense Visual SLAM 用于密集视觉冲击的紧凑三维高斯散射 Tianchen Deng 邓天辰11Yaohui Chen 陈耀辉11Leyan Zhang 张乐妍11Jianfei Yang 杨健飞22Shenghai Yuan 圣海元22Danwei Wang 王丹伟22Weidong Chen 陈卫东11 Abstract 摘要 …...

ChatGPT揭秘:高效论文写作的秘籍

ChatGPT无限次数:点击直达 ChatGPT揭秘:高效论文写作的秘籍 引言 在当今信息爆炸的时代,高效撰写论文对于研究者和学术工作者至关重要。随着人工智能技术的不断发展,ChatGPT等自然语言处理工具的出现为论文写作提供了全新的思路和工具。本文…...

电脑不能上网,宽带调制解调器出现问题如何处理

目录 一、问题说明 二、解决方案 一、问题说明 内网的设备能互联,内网的各个设备无法连外网。 电脑在检测网络时,出现以下提示: 二、解决方案 首先重启光猫(我们是电信宽带)。 如果还是有问题,再重启…...

云计算: OVN 集群 部署分布式交换机

目录 一、实验 1.环境 2.OVN 集群 部署云主机 3.中心端添加DVS分布式大二层交换机 二、问题 1.南向控制器查看主机名只显示localhost 2.中心端如何添加DVR分布式⼤三层路由器 一、实验 1.环境 (1) 主机 表1 宿主机 主机架构软件主要服务IP备注ovn_central中心端 ovn…...

electron+Vue3构建桌面应用之IPC通讯

最近在做一个C/S架构的项目预研 过程中遇到 Electron 与 Vue3 通讯的问题,费劲巴力的在网上找方案,发现都不理想,最终攻克之后,计划将过程写下来,供有需求的同学白嫖! 开始之前,先说一件重要的…...

html球体涨水

简单 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>div…...

ubuntu手动编译opencv 4.9.0遇到的问题汇总

ubuntu手动编译opencv 4.9.0遇到的问题汇总 编译流程 以4.9.0版本为例&#xff0c;可参考&#xff1a;https://docs.opencv.org/4.9.0/d2/de6/tutorial_py_setup_in_ubuntu.html 编译加速 https://blog.csdn.net/tfb760/article/details/104030841 ippicv_2021.10.0_lnx_i…...

SEO之搜索引擎的工作原理(三)

初创企业需要建站的朋友看这篇文章&#xff0c;谢谢支持&#xff1a;我给不会敲代码又想搭建网站的人建议 &#xff08;接上一篇。。。&#xff09; 排名 经过搜索引擎蜘蛛抓取页面&#xff0c;索引程序计算得到倒排索引后&#xff0c;搜索引擎就准备好可以随时处理用户搜索了…...

开发语言漫谈-python

python的语法和C完全不同&#xff0c;但是它也是C写的。也就是想成为高手&#xff0c;C是必备武功。不是每个人都想成为武林高手。所以客观上需要个简单上手开发效率高的语言&#xff0c;就这样python诞生了。python的发明人其实不喜欢蟒蛇&#xff0c;但是不知道为啥选这个名字…...

JVM指令收集

1. 栈和局部变量操作 1.1 将常量压入栈的指令aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量-1压入栈 iconst_0 将int类型常量0压入栈 iconst_1 将int类型常量1压入栈 iconst_2 将int类型常量2压入栈 iconst_3 将int类型常量3压入栈 iconst_4 将int类型常量4压入…...

小程序解析二维码:jsQR

1.了解jsQR jsQR是一个纯javascript脚本实现的二维码识别库&#xff0c;不仅可以在浏览器端使用&#xff0c;而且支持后端node.js环境。jsQR使用较为简单&#xff0c;有着不错的识别率。 2.效果图 3.二维码 4.下载jsqr包 npm i -d jsqr5.代码 <!-- index.wxml --> &l…...

【verilog 设计】 reg有没有必要全部赋初值?

一、前言 在知乎发现“reg有没有必要全部赋初值”这个问题&#xff0c;与自己近期对Verilog reg的进一步学习相契合&#xff0c;此文对这个问题进行总结。 二、reg的初值赋值方式 就语法意义赋初值而言&#xff0c;就是在声明reg时对其赋值。在工程中&#xff0c;对于数字系…...

NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估

目录 一、说明 二、Deepset SQUAD是个啥&#xff1f; 三、问答系统&#xff08;QA系统&#xff09;&#xff0c;QA系统在各行业的应用及基本原理 3.1 医疗 3.2 金融 3.3 顾客服务 3.4 教育 3.5 制造业 3.6 法律 3.7 媒体 3.8 政府 四、在不同行业使用QA系统的基本原理 五、关于…...

php开发中如何防止抓包工具伪造请求

要防止抓包工具伪造请求&#xff0c;采取一系列的技术和策略来增强应用程序的安全性。以下是一些关键步骤和最佳实践&#xff1a; 1. 使用HTTPS 确保应用程序使用HTTPS协议进行通信。HTTPS通过TLS/SSL加密客户端和服务器之间的数据传输&#xff0c;这使得抓包工具捕获到的数据…...

密码学 | 椭圆曲线数字签名方法 ECDSA(下)

目录 10 ECDSA 算法 11 创建签名 12 验证签名 13 ECDSA 的安全性 14 随机 k 值的重要性 15 结语 ⚠️ 原文&#xff1a;Understanding How ECDSA Protects Your Data. ⚠️ 写在前面&#xff1a;本文属于搬运博客&#xff0c;自己留着学习。同时&#xff0c;经过几…...

拟态个人主页UI源码

拟态个人主页 效果图源代码领取源码 效果图 PC端 移动端 源代码 index.php <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>孤客 |佩恩</title><meta name"keywords" co…...

移动硬盘无法打开?别慌!这里有救星!

移动硬盘作为现代生活中重要的数据存储工具&#xff0c;承载着我们大量的文件和数据。然而&#xff0c;有时我们会遇到移动硬盘无法打开的情况&#xff0c;这往往让人焦虑不已。那么&#xff0c;当移动硬盘无法打开时&#xff0c;我们应该如何应对呢&#xff1f; 移动硬盘无法打…...

windows下已经创建好了虚拟环境,但是切换不了的解决方法

用得多Ubuntu&#xff0c;今天用Windows重新更新anaconda出问题&#xff0c;重新安装之后&#xff0c;打开pycharm发现打开终端之后&#xff0c;刚开始是ps的状态&#xff0c;后面试了网上改cmd的方法&#xff0c;终端变成c盘开头了 切换到虚拟环境如下&#xff1a;目前的shell…...

Java反序列化基础-类的动态加载

类加载器&双亲委派 什么是类加载器 类加载器是一个负责加载器类的对象&#xff0c;用于实现类加载的过程中的加载这一步。每个Java类都有一个引用指向加载它的ClassLoader。而数组类是由JVM直接生成的&#xff08;数组类没有对应的二进制字节流&#xff09; 类加载器有哪…...

课堂行为动作识别数据集

一共8884张图片 xml .txt格式都有 Yolo可直接训练 已跑通 动作类别一共8类。 全部为教室监控真实照片&#xff0c;没有网络爬虫滥竽充数的图片&#xff0c;可直接用来训练。以上图片均一一手工标注&#xff0c;标签格式为VOC格式。适用于YOLO算法、SSD算法等各种目标检测算法…...

【数据库】MVCC

MVCC是一种用来解决读写冲突的无锁并发控制&#xff0c;也就是为事务分配单项增长的时间戳&#xff0c;为每个修改保存一个版本&#xff0c;版本与事务时间戳关联&#xff0c;读操作只读该事务开始前的数据库的快照 MVCC&#xff0c;全称Multi-Version Concurrency Control&am…...

快速排序题目SelectK问题

力扣75.颜色分类 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sor…...

es6解构赋值

ES6解构赋值是一种简洁的为变量赋值的方式&#xff0c;它允许我们从数组或对象中提取值并赋给对应的变量。 解构赋值在ES6中被引入&#xff0c;主要目的是为了简化代码&#xff0c;提高代码的可读性。以下是解构赋值的基本用法&#xff1a; 数组解构&#xff1a;当我们需要从数…...

Jenkins上面使用pnpm打包

问题 前端也想用Jenkins的CI/CD工作流。 步骤 Jenkins安装NodeJS插件 安装完成&#xff0c;记得重启Jenkins。 全局配置nodejs Jenksinfile pipeline {agent anytools {nodejs "18.15.0"}stages {stage(Check tool version) {steps {sh node -vnpm -vnpm config…...

设计编程网站集:动物,昆虫,蚂蚁养殖笔记

入门指南 区分白蚁与蚂蚁 日常生活中&#xff0c;人们常常会把白蚁与蚂蚁搞混淆&#xff0c;其实这两者是有很大区别的&#xff0c;养殖方式差别也很大。白蚁主要食用木质纤维&#xff0c;会给家庭房屋带来较大危害&#xff0c;而蚂蚁主要采食甜食和蛋白质类食物&#xff0c;不…...

如何做私人网页/昆明seo工资

登录mysql mysql -uroot -p Enter password: <输入newpassword> 登录mysql忘记密码的解决方案 同时&#xff0c;登录MySQL时出现 mysql Access denied for user rootlocalhost的错误&#xff0c;也可以用下面的解决方法&#xff0c;主要思路&#xff1a;修改数据库中用…...

建立什么网站赚钱/十大室内设计网站

Summernote – 基于 Bootstrap 的文本编辑器 Summernote 是一个简单&#xff0c;灵活&#xff0c;所见即所得&#xff08;WYSIWYG&#xff09;的编辑器&#xff0c;基于 jQuery 和 Bootstrap 构建。Summernote 所有主要的操作都支持快捷键&#xff0c;有一个功能强大的 API&…...

小语种企业网站建设/sem优化是什么意思

shiro是我目前用的项目的一个鉴权框架&#xff0c;也是apache基金会的&#xff0c;用来处理登录&#xff0c;鉴权这部分。下面是官网的介绍页&#xff1a; Shro 官网网站&#xff0c;不管是了解还是学习&#xff0c;都是第一手资料 网上一个用XML文件配置的&#xff0c;这里我…...

张家口市建设局网站/seo诊断站长

一、基本语法&#xff08;ECMA&#xff09; 单行注释 ///* 多行注释 */变量赋值 默认以换行符作为结束符&#xff0c;有分好以分号作为结束符号JS的引入方式&#xff1a;1. <script> </script> 2. <script srcjs文件名> </script&g…...

餐饮网站建设/提高网站排名

目录 0. 相关文章链接 1. 工具说明 2. 准备Kafka数据 3. 准备配置文件 4. 拷贝所需jar包到Spark 5. 运行导入命令 6. 查看导入结果 0. 相关文章链接 Hudi文章汇总 1. 工具说明 HoodieDeltaStreamer工具 (hudi-utilities-bundle中的一部分) 提供了从DFS或Kafka等不同来…...

网络推广平台cpa/苏州首页关键词优化

华为鸿蒙系统倒计时4天对于鸿蒙系统&#xff0c;相信大家都非常期待&#xff0c;尤其是那些“花粉”&#xff0c;肯定已经等了很久了&#xff0c;而现在鸿蒙终于要来了&#xff01;根据官方消息称&#xff0c;倒计时4天&#xff0c;华为鸿蒙系统即将亮相&#xff0c;就在12月16…...