😊你好,我是小航,一个正在变秃、变强的文艺倾年。
🔔本文讲解卷积神经网络:图像识别实战,一起卷起来叭!
目录
- 一、“卷”
- 二、LeNet-5网络
一、“卷”
这节课我们来看如何把卷积运算融入到神经网络中,我们还是以上节的“5”为例:
这是一张 8 * 8 的灰度图,用一个 3 * 3 的卷积核对它进行卷积,输出一个 6 * 6 的结果,我们把这个做卷积运算的一层称为卷积层。卷完以后我们把结果拆成一个数组,送入到后面的全连接层神经网络中。
那么问题来了,卷积核中的各个值
是多少呢?实际上,我们不必管它,随机初始化这些值就好,卷积核的值也是通过训练学习
而来的。
💡那么如何反向传播
调整参数呢?
我们知道,卷积的过程就是:卷积核依次和这些小图(局部数据)对应元素相乘再相加
得到一个值。
这个 3 * 3 的小区域的每个元素值是输入数据
,卷积核上的值
可以看作是对应输入数据的权值参数W
。对应元素相乘并相加得到了一个线性函数:
当然偏置项b、激活函数也不能少:
不过还需要注意几个细节:
- 首先这四个
神经元的输出
是根据卷积的过程排列而成的二维
的结构,所以我们在送入全连接层时需要手动进行平铺
。 - 然后这四个
神经元的输入
并不相同,实际上是同一个图片的不同区域
- 最后这四个神经元的
权值参数并不是独立
的,它们都来自同一个卷积核
,所以实际上它们的权值参数(包括偏置项b)是一样的,我们只是把一个东西强行拆开平铺成4个。也就是说这四个神经元复用了同一套权重参数
,这就是所谓的参数共享
。
相比之下我们使用全连接层,需要特别多的参数:
而对于卷积层,由于使用参数共享,只需要使用10个参数:
实际上你想要提取多少特征就搞多少个卷积核就可以
我们都知道灰度图片是一个通道的,而彩色图片有三个通道的:
此时我们的卷积运算也需要在三维上运算:
二、LeNet-5网络
在卷积网络发展的早期,深度学习领域巨头人物LeCun
在1988
年提出了一种经典的卷积神经网络结构:LeNet-5
可以看出,LeNet-5就卷了两次之后再送入全连接层。
这两层立方块就是所谓的“池化层”
,我们从这个数据的左上角开始,框出 2 * 2 区域,相加取平均值,这就是所谓“平均池化”
(当然也可以取最大值,称为“最大池化”
)
🔨我们简单的复现一下LeNet-5网络
:LeNet-5.py.py
简单的补充说明一下:
X_train数据说明:
卷积前后图像大小的计算:
卷积-Same模式:
卷积-Valid模式:
🚩训练结果与测试结果如下: