卷积神经网络(CNN)——基础知识整理

文章目录

1、卷积神经网络

2、图片格式

3、图片卷积运算

4、Kernel 与 Feature Map

5、padding/边缘填充

6、Stride/步长

7、pooling/池化

8、shape

9、epoch、batch、Batch Size、step

10、神经网络

11、激活函数


1、卷积神经网络

既然叫卷积神经网络,这里面首先是卷积,然后是神经网络,是二者的一个结合,卷积这个概念实际上来自信号处理领域,一般是对2个信号进行卷积运算,见下图:

神经网络,这是机器学习的元老,是对人脑神经元工作机制的模拟,每个神经元是一个计量单元,输入的数据与权重进行相乘、求和,再加上偏置,得到的数据再经过激活函数,将结果进行输出,见下图,多个神经元相互连接组成神经网络,具体就不展开说了。

卷积神经网络在图像分类和识别领域的应用非常多,最早用于手写数字的分类识别,后来逐渐发展起来。

2、图片格式

首先从手写体图像识别说起,一副图片如果是单色的,那么可以看成是一个二维的数字矩阵,每个像素点的颜色都可以用灰度值来表示;那如果图像是彩色的,可以将图像看成是RGB三个单色图片叠加的组合。

每一张图片的每一个像素点,其实都是一个数值,整体可看成一个三维矩阵。

3、图片卷积运算

那么对一个彩色图像做卷积,到底做了什么呢?下面这张动图,很好地展示了图像卷积计算的过程,原始图像有RGB三个通道channel1-3,对应有3个卷积核Kernel1-3,每一个通道的图片与对应的卷积核做乘法运算,每个通道得到的数值再相加,加上总体的偏置Bias得到特征图(feature map)里面的一个值。

下面是这个图是一个立体的展示:

4、Kernel 与 Feature Map

这里面第一个问题,就是卷积核为什么是3*3大小的,实际上这个尺寸也是经过学者们不断研究总结出来的,目前认为3*3的感受野足够用,而且运算量也会相对低,还有1*1的卷积核在使用,其他的基本不用了。

第二个问题,卷积核里面的参数是怎么来的,其实这里面的参数机器学习要实现的,当我们把所有的核参数都调整好,那这个模型也就确定了。也有一些先验的卷积核,如下面的核,进行卷积之后,可以实现锐化和边缘提取的效果。

那我们对一幅图片进行卷积之后,就会形成一个Feature Map,它会提取一些特征,用不同的核进行卷积就会输出多个Feature Map。

  • 卷积核/Kernels(convolution kernel)也叫过滤器、滤波器。
  • 特征图/Feature map,当图像像素值经过过滤器后得到的就是特征图。

下面这两张图就很直观地展示了kernel 和 feature map的实际样子。

卷积神经网络处理过程中,随着模型运算的深入,图像的尺寸(h*w)会越来越小,但是提取的特征会越来越多。

5、padding/边缘填充

这里面由于边界的问题,每一次卷积之后,图像不可避免地会被压缩一点,这就涉及到一个概念padding,如果设置padding的值为‘same’,则会在原图像周围补充1圈像素点,一般补0,这样后面的图像尺寸都会与原图像相同。默认参数是“valid”,翻译过来是有效的意思,这里的有效指的是与卷积核做运算的图片像素都是有效的,实际上就是没有外圈的补0。

unvaildvalid

下图展示的就是带padding的卷积效果,这个图的问题是用的是4*4的卷积核,实际中没有有4*4卷积核的。

用3*3的卷积核,可保持图像卷积后尺寸不变。

图片引自:https://github.com/vdumoulin/conv_arithmetic

6、Stride/步长

上图是步长为1的情况,如果步长为2,就是相当每隔两行或者两列进行卷积,实际上起到了降维的作用,就是卷积后的feature map尺寸会变小。

图片引自:https://github.com/vdumoulin/conv_arithmetic

7、pooling/池化

池化主要作用是把数据降维,也叫下采样,可以有效的避免过拟合。主要有两种池化方式,Max pooling / avg pooling,通常情况下,池化区域是2*2大小,池化之后,4*4的图片,会变成2*2大小。

8、shape

在tensorflow和pytorch中,shape的结构有所区别:

  • tensorflow输入shape为(batch_size,  height, weight, in_channels)/(样本数、图像高度、图像宽度, 图像通道数)
  • pytorch输入shape为(batch_size, in_channels, height, weight)

上图中,

输入图片的shape:[in_channels, height, weight]/[3,8,8];

卷积核的shape:[out_channels, in_channels, height, weight]/[5,3,3,3];

输出图片的shape:[out_channels, out_height, out_weight]/[5,6,6];

卷积核的输入通道数(in depth)由输入矩阵的通道数(in_channels)所决定。比如:一个RGB格式的图片,其输入通道数为3。

输出矩阵的通道数(out depth)由卷积核的输出通道数所决定,比如下面这个动画当中,卷积核有8个,那么输出out_channels则为8。

图片 引自:https://animatedai.github.io/

9、epoch、batch、Batch Size、step

  • epoch:表示将训练数据集中的所有样本都过一遍(且仅过一遍)的训练过程。在一个epoch中,训练算法会按照设定的顺序将所有样本输入模型进行前向传播、计算损失、反向传播和参数更新。一个epoch通常包含多个step。
  • batch:一般翻译为“批次”,表示一次性输入模型的一组样本。在神经网络的训练过程中,训练数据往往是很多的,比如几万条甚至是几十万条——如果我们一次性将这上万条的数据全部放入模型,对计算机性能、神经网络模型学习能力等的要求太高了;那么就可以将训练数据划分为多个batch,并随后分批将每个batch的样本一起输入到模型中进行前向传播、损失计算、反向传播和参数更新。但要注意,一般batch这个词用的不多,多数情况下大家都是只关注batch size的。
  • Batch Size(批大小):表示在单次训练中传递给模型的图像数量,我们在神经网络训练过程中,往往需要将训练数据划分为多个batch;而具体每一个batch有多少个样本,那么就是batch size指定的了。
  • step:一般翻译为“步骤”,表示在一个epoch中模型进行一次参数更新的操作。通俗地说,在神经网络训练过程中,每次完成对一个batch数据的训练,就是完成了一个step。

10、神经网络

实际上,上面的卷积处理过程,都是在对图片进行特征提取,而最终要进行分类或预测就需要借助神经网络了,所以一般在卷积处理之后需要对数据进行压平(flatten)操作,使其变为1维的数据,便于送入神经网络的输入层。

神经网络模型里面(见下图),全连接层/Dense层是深度学习中常用的一种神经网络层,也称为密集连接层或多层感知机层。它既能当输入层(input layer),又能当输出层(output layer),还能当中间层(Hidden layer)。

推荐一个绘制神经网络图的工具:NN SVG

11、激活函数

在神经网络中,激活函数用于引入非线性,使网络能够学习复杂的映射关系。如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。以下是一些常用的激活函数。常用的有:

参考:机器学习算法那些事

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式——结构型——外观模式Facade

处理器类 public class Cpu {public void start() {System.out.println("处理器启动了...");} } 内存类 public class Memory {public void start() {System.out.println("内存启动了...");} } 硬盘类 public class Disk {public void start() {Syste…

【娱乐】战双帕弥什游戏笔记攻略

文章目录 Part.I IntroductionChap.I Information Part.II 新手攻略Chap.I 角色和武器挑选Chap.II 新手意识推荐 Part.II 阵容搭配Chap.I 一拖二Chap.II 毕业队 Reference Part.I Introduction 2019年12月5日全平台公测。 偶然间入坑战双,玩了几天,觉得…

V R虚拟现实元宇宙的前景|虚拟现实体验店加 盟合作|V R设备在线购买

VR(虚拟现实)技术作为一种新兴的技术,正在逐渐改变人们的生活和工作方式。随着技术的不断进步,人们对于元宇宙的概念也越来越感兴趣。元宇宙是一个虚拟世界,通过VR技术可以实现人们在其中进行各种活动和交互。 元宇宙的…

戴尔灵越3000来说2.5G的双核显存能干啥?

吃鸡已经成为大家耳熟能详的网络游戏。 很多人认为,想要享受吃鸡的乐趣,就必须组装一台高端电脑。 虽然配置越高越好,但现实是很多配置都是以性能为标准的。 有余了,没必要刻意追求高配置、高特效。 说实话,吃鸡不一定…

【Qt】:多种方式编辑hello world

多种方式编辑hello world 一.QLabel二.对象树三.使用单行编辑框四.使用按钮 (小技巧:1.可以使用F4来进行头文件和对应cpp文件的切换;2.写完一个函数的声名之后,按下altenter,就可以自动的在对应的cpp 文件中添加函数的定义了.) 一.QLabel 注意这里是QSt…

数据可视化基础与应用-04-seaborn库从入门到精通01-02

总结 本系列是数据可视化基础与应用的第04篇seaborn,是seaborn从入门到精通系列第1-2篇。本系列的目的是可以完整的完成seaborn从入门到精通。主要介绍基于seaborn实现数据可视化。 参考 参考:数据可视化-seaborn seaborn从入门到精通01-seaborn介绍与load_datas…

【SpringCloud】Ribbon负载均衡

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 🛸学无止境,不骄不躁,知行合一 文章目录 …

java多线程中的阻塞队列

一、普通不阻塞队列 还记得队列我们如何实现吗?我们用的是循环队列的方式,回一下: 描述:开始tail和head指针都指向最开始位置,往里面添加元素tail,出元素head 初始状态: put元素后状态 take…

KOSMOS-2.5: A Multimodal Literate Model

KOSMOS-2.5: A Multimodal Literate Model 相关链接:arXiv 关键字:multimodal、literate model、text-intensive images、Transformer architecture、document-level text recognition 摘要 我们介绍了KOSMOS-2.5,这是一个用于机器阅读文本密…

2024知乎广告推广怎么做,知乎推广教程!

随着社交媒体影响力的日益增强,知乎作为中国高质量知识分享社区的代表,已经成为品牌方精准触达目标受众的重要阵地。云衔科技凭借其专业的一站式广告服务能力,为企业提供知乎广告开户及代运营解决方案,助力企业在知乎平台上实现品…

这6个png免抠素材网,免费下载,值得收藏!

找png免抠素材,就上这6个网站,免费下载,可商用。设计师必备,赶紧收藏! 1、菜鸟图库 https://www.sucai999.com/searchlist/66008----all-0-1.html?vNTYxMjky 网站主要分享设计素材为主。像平面海报、免抠元素、背景图…

前端学习<二>CSS基础——08-CSS属性:定位属性

CSS的定位属性有三种&#xff0c;分别是绝对定位、相对定位、固定定位。 position: absolute; <!-- 绝对定位 -->​position: relative; <!-- 相对定位 -->​position: fixed; <!-- 固定定位 -->​ 下面逐一介绍。 相对定位 相对定位&#xff1a;让…

经典永不过时 Wordpress模板主题

经得住时间考验的模板&#xff0c;才是经典模板&#xff0c;带得来客户的网站&#xff0c;才叫NB网站。 https://www.jianzhanpress.com/?p2484

用xshell或ftp连接本地虚拟机linux系统,centos7修改动态ip地址

如果不知道怎么下载vm本地虚拟机软件或者不知道怎么安装可以参考我上一篇博客 vmWare虚拟机下载安装详细教程,手把手一步一步教学-CSDN博客 安装好虚拟机软件我们想要通过xshell和ftp工具来管理,小黑框不太舒服哈哈哈 一.准备工作 输入命令来查看当前的ip地址 ip addr 可以…

【目标跟踪】红绿灯跟踪

文章目录 一、前言二、结果三、跟踪3.1、检测输入3.2、预测与运动补偿3.3、第一次匹配3.4、第二次匹配3.5、第三次匹配3.6、航迹的起始与信息的发布 四、后记 一、前言 红绿灯场景对当前无人驾驶来说是个灾难性的挑战。暂且不说复杂的十字路口&#xff0c;譬如简单的人行道红绿…

Go语言学习Day6:数组与切片

名人说&#xff1a;莫愁千里路&#xff0c;自有到来风。 ——钱珝 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1. 数组① 什么是数组② 数组的声明③ 初始化数组的几种方式④ 遍历数组元素⑤ 数组为值类型⑥ 数…

云平台教程 | 手把手教你绘制时序分析

爱基百客云平台小工具——时序分析使用教程目录 1 爱基百客云平台之时序分析 2 参数设置 3 任务查看 4 结果 01 爱基百客云平台小工具使用 首先&#xff0c;打开爱基百客官网&#xff1a;http://www.igenebook.com&#xff1b;点击菜单栏最右侧“云平台”按钮。 弹出云平…

Qt实现Kermit协议

1 概述 Kermit文件运输协议提供了一条从大型计算机下载文件到微机的途径。它已被用于进行公用数据传输。 其特性如下: Kermit文件运输协议是一个半双工的通信协议。它支持7位ASCII字符。数据以可多达96字节长度的可变长度的分组形式传输。对每个被传送分组需要一个确认。Kerm…

红米手机Redmi 不会自动弹出USB调试选项,如何处理?(红米小米均适用)

参考&#xff1a; 红米手机Redmi 不会自动弹出USB调试选项&#xff0c;如何处理&#xff1f;&#xff08;红米小米均适用&#xff09; - 知乎 以红米9A为例&#xff1b; 【设置】菜单进入后&#xff0c;找到【我的设备】&#xff0c; 选择【全部参数】&#xff0c; 对准miui版…

什么是framebuffer,怎么应用(二)————如何打印BMP图片、字幕函数、字符串

如何切换到终端模式 在昨天写的文章中&#xff0c;没有写到如何切换到终端模式&#xff0c;在编译完函数之后&#xff0c;我们需要从桌面切换到终端模式&#xff1a; ALTCTRLF3切换到终端模式后&#xff0c;登录账号名与密码&#xff0c;其余操作均有桌面终端一样。 如何切换…