IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 卷积神经网络(CNN)的深入理解 -> 正文阅读

[人工智能]卷积神经网络(CNN)的深入理解

序言

之前对MP模型、单层感知器、多层感知器(BP)的基础进行了理解,接下来写一下对卷积神经网络的理解。卷积神经网络(CNN)由卷积(convolution), 激活(activation),池化(pooling)和全连接四种结构组成。下面也从这三部分对CNN进行介绍。

卷积(convolution)

1、无padding时

首先我们来看下面这张图
在这里插入图片描述
这张图其实就是卷积的过程,中间黄色的那个框就是卷积核,我们能够看出它的大小是3x3,这里将卷积核的大小设为k,k的值就是3,接着我们看input这部分,这个式子其实就包含了卷积结果,它是核位置权重与原图对应位置相乘然后相加的结果0,output中是绿色的部分,那么output中其它部分的数字是哪里来的呢?,这里就不得不提到卷积核的步长了,顾名思义,卷积核的步长就是卷积核的移动步数,如下图所示,卷积核的步长为1时的动图:
在这里插入图片描述
聪明的小伙伴可能就已经看出,在已知原图大小w,x1卷积核大小k和步长s时,可以得到经过卷积后的特征图的大小,比如第一幅图,原图大小是5x5,卷积核大小是3x3,卷积核的步长为1,在从左到右的方向上,卷积核可以移动三次,同理在从上到下的方向上,卷积核移动也是三次。由此得到卷积后的特征层大小为3x3。下面给出计算公式:
在这里插入图片描述

2、有padding时


如上图所示,padding其实是原图周围的白色空格,相当于在原图中添加了像素值为0的像素,使得原图的大小扩大变为(w+2padding)x(w+2padding),公式如下:
在这里插入图片描述
那么为什么要加入padding呢?

1、为了不丢弃原图信息。
2、为了保持特征图的大小与原图一致。
3、为了让更深层的layer的input依旧保持有足够大的信息量。
4、为了实现上述目的,且不做多余的事情,padding出来的pixel的值都是0,不存在噪音问题。
5、为了保持边缘信息。

3、卷积与全连接

如之前的多层感知器(BP),如下三层感知器,每个神经元都与上层所有的神经元相连接,这就是全连接。
在这里插入图片描述
那么为什么要用卷积呢?下面我们来看一组图
在这里插入图片描述左边是全连接,右边是卷积,假设图片大小为1000x1000,隐藏层含有1000x1000个神经元。那么我们来看一下他们的参数量:

全连接:首先一个神经元与图片中的每个像素点相连,每条连接都会有一个对应的权重。每个神经元一共会有1000x1000个参数权重,一共有1000x1000个神经元,
所以说参数量大小是1000x1000x1000x1000=10的12次方个参数,可以说是很大了。
卷积:这里假设隐藏层每个神经元只和输入10x10的局部patch相连接,且卷积核移动的步长为10
这样其实每个神经元对应权重的参数量其实为10x10=100,一共有1000x1000个神经元,因此,总的参数量大小为:1000x1000x10x10=10的8次方,与全连接的参数量整整差了4个数量级。
卷积能够通过权值共享将图片各个部分联系起来,这就使得各个部分相互关联,而全连接各个部分是相互独立的。

在这里给大家带来一个链接,上面有很多图能够帮助大家深入的理解卷积神经网络的卷积过程。如下:卷积大全
在这里插入图片描述

通道数(一般一张彩色图像为三通道RGB)

接着我们考虑一种实际的情况,这个情况就是通道数,开始时我并不能理解这个通道数,就比如上面图中输入图像的通道数为3,在经历卷积后,通道数为什么变成了64通道呢?之后慢慢明白,其实这个通道数就相当于卷积核的个数即通道数=卷积核个数,如上图是64个2x2大小的卷积核在原图上进行卷积操作,每个卷积核的权重并不一样且卷积过后得到的卷积层通道数为1,卷积过后将得到的通道数叠在一起就得到了卷积层的通道数。
下面再给出一张图方便大家理解,
在这里插入图片描述

激活(激活函数)

相信大家对激活函数都有一定了解,像Sigmoid函数,tanh函数,Relu函数等等,卷积操作为线性操作,这就导致一个问题,那就是模型的表达能力不够,而激活函数是分线性函数,它可以为计算加入非线性因素以增加线性表达的能力。若是还不太理解,在这里给大家推荐一篇博客,里面对激活函数的讲解还是挺详细的。如下:卷积神经网络(CNN)中,卷积层、激活函数、池化层、全链接层术语解析

池化(池化层)

经过卷积操作后,卷积层的参数量依旧很多,因此通过池化将输入的特征图进行压缩,
一方面来说特征图得以变小减少了网络的参数量;
另一方面则将主要特征提取出来。
下图是池化的操作,左边是平均池化,右边是最大池化,关于池化给大家推荐一个B站上的视频
同济自豪兄
当然别的讲的也不错,不过不是我所要的,所以各取所需吧。
在这里插入图片描述

全连接

全连接,顾名思义就是将经历卷积以后的特征层的特征都连接起来,连接过后就可以进行统计分类了。下面是整个CNN的网络图:
在这里插入图片描述
下面是网络层的计算公式及过程:
在这里插入图片描述

误差反传

关于卷积神经网络的误差反传我并没有太多的深入了解,不过有一个知乎上的链接,有想学习的朋友可以去学一下,链接如下:
卷积神经网络反向传播最清晰的解释?
那么记录到这里就结束了。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-22 10:56:24  更:2021-10-22 10:59:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 8:42:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码