卷积神经网络(一)

0 介绍

卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型。主要用于图像识别领域,CNN指的是一类网络,而不是某一种。可以看到这些网络结构非常有创造力。下面我们一起学习下卷积神经网络。

1 神经网络到卷积神经网络

之前给大家介绍过神经网络,如下图

在这里插入图片描述
神经网络由输入层,隐藏层和输出层组成,输入是特征,输出是预测的结果,其中每条线代表连接的权重,通过学习来调整这些权值。

参数个数:在这里插入图片描述
如mnist数据集的数据图片是2828的灰度图。使用全连接层,我们需要先将2828的矩阵先用flatten拉成784个像素点的灰度值行向量。我们建立一个具有128个节点的隐藏层,和具有10个节点的输出层,则如下图
在这里插入图片描述
第一层参数为:784×128个w + 128个b 第二层参数:128*10个w+10个b 一共101770个参数。也就我们建立的这个神经网络需要101770个参数。这类网络也叫全连接网络。
在实际项目中输出神经网络的是具有更高分辨率的彩色图片如下图
在这里插入图片描述
使得送入全连接网络的输入特征数过多,待优化的参数过多容易导致模型过拟合。为了减少特征参数,我们在实际应用时会对原始图像进行特征提取,再把提取到的特征送给全连接网络。让全连接网络输出识别结果。如下图所示。
在这里插入图片描述
而卷积计算是一种有效的特征提取方法。一般会用一个正方形的卷积核,按指定步长,在输入特征图上滑动,遍历输入特征图中的每个像素点。每一个步长,卷积核会与输入特征图出现重叠区域,重合区域对应元素相乘、求和再加上偏置项得到输出特征的一个像素点。

2 卷积定义

卷积神经网络(Convolutional Neural Networks)是一种深度学习模型,常用来处理图像。一般会用一个正方形的卷积核,按指定步长,在输入特征图上滑动,遍历输入特征图中的每个像素点。每一个步长,卷积核会输入特征图出现重合区域,重合区域对应元素相乘、求和再加上偏置项得到输出特征的一个像素点。如果输入特征是单通道特征图,则使用这样深度为1的单通道卷积核。如果输入特征是三通道彩色图,则需要使用深度为3的卷积核如可以使用一个333的卷积核,或者553的卷积核。总之,要使卷积核的通道数与输入特征图的通道数一致。所以输入特征图的深度(channel数),决定了当前层卷积核的深度:由于每个卷积核再卷积计算后,会得到一张输出特征图,所以当前层使用了几个卷积核,就有几张输出特征图。所以当前卷积核的个数,决定了当前层输出特征图的深度。如果你觉得某层模型的特征提取能力不足,可以在这一层多用几个卷积核提高这一层的特征提取能力。

重点: 输入特征图的深度(channel数),决定了当前层卷积核的深度:
当前层卷积核的个数,决定了当前层输出特征图的深度。
如果该层模型特征的提取能力不足,可以在这一层多用几个卷积核提高这一层的特征提取能力。

如下图:
在这里插入图片描述

在执行卷积计算时,卷积核里的这些参数是固定的,在每次反向传播时,这些小颗粒中存储的待训练参数,会被梯度下降法更新,卷积就是利用立体卷积核,实现了参数的空间共享。下面我们具体看下卷积的计算过程。

3 卷积计算过程

如果输入特征图是单通道的,选择单通道卷积核。如下图
在这里插入图片描述
这个例子的输入特征图是5行5列单通道,我选用了33单通道卷积核,滑动步长是1,在这个输入特征图上滑动。每滑动一步输入特征图与卷积核里的9个元素重合。它们对应元素相乘求和再加上偏置项b,比如卷积核滑动到当前位置时,-11+00+12+(-1)5+04+12+(-1)3+04+15+1=1

对于特征图是三通道的,则选择三通道卷积核。如下图:
在这里插入图片描述
这个例子的输入特征图是5行5列红律蓝三通道数据。选用3*3三通道卷积核,滑动步长是1,在这个输入特征图上滑动,每滑动一步输入特征图与卷积核里的27个元素重合,它们对应元素相乘求和再加上偏置项b,比如卷积核滑动到如上图位置,红绿蓝三层分别与卷积核的三层特征数据重合,他们对应元素相乘求和再加上偏置项b,得到输出特征图中的一个像素值。这就是卷积计算过程。
下面这张动图帮助大家理解卷积核在输入特征图上,按指定步长滑动,每个步长,卷积核会与输入特征图上部分像素点重合。重合区域,输入特征图与卷积核对应元素相乘求和,得到输出特征图中的一个像素点,当输入特征图被遍历完成,得到一张输出特征图,完成了一个卷积核的计算过程。当有n个卷积核时,会有n张输出特征图,叠加在这张输出特征图的后边。
在这里插入图片描述

4 卷积更多内容

CNN的主要特点是它使用了卷积操作来提取输入数据的特征。与常规神经网络不同,CNN利用了图像中的空间局部连接性。
CNN的主要组成部分包括:

  1. 卷积层(Convolutional Layer):这是CNN的核心层,它通过学习过滤器(也称为卷积核)来提取输入数据的特征。过滤器在输入数据上滑动,计算每个区域的响应值,从而提取不同区域的特征。
  2. 池化层(Pooling Layer):它负责减小输入的尺寸,提高过滤器的泛化能力。常用的池化操作包括最大池化和平均池化。
  3. 全连接层(Fully Connected Layer):这些层与常规神经网络中的全连接层类似,它们将前面层的输出结合在一起,用于分类或回归任务。
  4. 激活函数:卷积层和全连接层之间通常加入非线性激活函数,如ReLU函数。
    通过重复使用卷积层-池化层-激活函数,CNN可以自动学习图像中的空间结构,从而用于计算机视觉等领域的图像分类、目标检测等任务。CNN的这种结构设计使它尤其适合处理二维结构化数据如图像。

参考: https://zhuanlan.zhihu.com/p/156926543
https://www.bilibili.com/video/BV1B7411L7Qt?p=26&vd_source=fc6f789f853f99a7782b9f11201c8f5e

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值