学习了前馈神经网络和卷积两个知识之后,开始学习卷积神经网络。
这是一个简单的神经网络,包含三层: 输入层、隐藏层、输出层,其中隐藏层的层数根据需要而定。
文章图片
卷积神经网络是从传统神经网络改进而来,结构图对比:
增加了卷积层(Convolution)与池化层(Pooling Layer)。
在卷积神经网络中,输入输出的数据称为特征图。
一.卷积层
1.二维卷积
一维卷积是这样的
文章图片
文章图片
二维卷积是这样的
文章图片
在图像处理中的二维卷积可以理解为一个二维卷积核从二维矩阵上滑过,进行相乘叠加
填充
步长
2.从全连接的局限性讲起
全连接层在使用中,前后两层的所有神经元全部连接,这样的连接,参数太过冗余。如果输入是一张640*480的图片,输入有30720个节点,在经过几层指数增长之后,计算消耗变得难以接受。
文章图片
3.通过对比了解卷积层
在输入数据进入卷积层的时候,由于有卷积核的存在,卷积层中的一个神经元只与输入数据的局部数据相连,并不是全部数据。例如卷积核的大小是3x3,那么就代表输入特征图中的3x3的局部数据连接到卷积层一个神经元。这是CNN的第一个重要特性:局部感知。
文章图片
在全连接网络中,每条连接都有一个独立的权重。但是在卷积层中,计算流程是卷积核滑过特征图,卷积核里的参数是不变的,卷积核里的参数也就是权重。极大的减少了要训练的参数,CNN的第二个重要特性就是同一通道中所有神经元权重共享。
4.多通道输入
卷积层的输入可以是同时输入多个矩阵,每个矩阵称为通道。输入的特征图和卷积核的形状用(通道,宽,高)表示。例如对于一个(4,4,4)的输入特征图,卷积核的大小是(4,3,3),输出的特征图是(1,2,2)。
文章图片
这4个3x3的矩阵构成一个卷积核,输出一张特征图。如果需要n张特征图,那就要设置n个(4,3,3)的卷积核。
这就是为什么在网上搜到的很多示意图会用长方体来表示CNN。
二.池化层 池化-Pooling,pool是名词“水池”,动词“汇集”。这一层的工作是对网络中的特征进行选择,降低特征数量,从而减少计算开销,但不知道为啥翻译成池化。
通常在连续的卷积层之间会周期性地插入一个池化层,在一个卷积层得到输出特征图之后,再把这个特征图输入池化层。
最大池化
文章图片
平均池化
文章图片
图像深度学习中图像尺寸过大,池化是一种降采方式,引入池化层以减少参数矩阵的尺寸,从而减少最后的参数数量——根本目的为了防止过拟合。
三.全连接层(FC)在CNN中的作用
全连接层在整个网络卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的特征表示映射到样本的标记空间的作用。
一段来自知乎的通俗理解:
从卷积网络谈起,卷积网络在形式上有一点点像咱们正在召开的“人民代表大会”。卷积核的个数相当于候选人,图像中不同的特征会激活不同的“候选人”(卷积核)。池化层(仅指最大池化)起着类似于“合票”的作用,不同特征在对不同的“候选人”有着各自的喜好。
全连接相当于是“代表普选”。所有被各个区域选出的代表,对最终结果进行“投票”,全连接保证了receiptive field
是整个图像,既图像中各个部分(所谓所有代表),都有对最终结果影响的权利。
【人工智能|深度学习-1.3卷积神经网络】在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转换为卷积核为1*1的卷积;而前层是卷积层的全连接层可以转换为卷积核为前层卷积输出结果的高和宽一样大小的全局卷积。
推荐阅读
- TensorFlow2|深度学习之卷积神经网络(12)深度残差网络
- 笔记|PaddleDetection-YOLOv3模型结构解析(二)
- 目标检测|目标检测之YOLOv1源码解析
- 深度学习|yolo系列 优缺点以及源码解析
- PyTorch-YOLOV3源码解读(网络结构)
- 大数据|经济下行基建托底,偶数湖仓一体打造坚实新基建数字底座
- tensorflow|深度学习 ——回归预测Tips
- 数据集归纳|目标检测、工业缺陷、图像分割----深度学习数据集归纳
- 深度学习|Jupyter Notebook(Anaconda)——两个环境分别修改默认打开目录(深度学习第一周番外篇)