基于图像数据识别的卷积神经网络算法

cifar-10的图像数据是一个32*32*3的图像,里面一共有50000张图并分为10个类别。此次作业主要运用简单的卷积神经网络来对50000张图训练并选出1000张来预测。

卷积神经网络与传统神经网络相比,多了卷积层,池化层,dropout,其目的就是减少参数的数量从而实现网络的深度,利用dropout等方法降低过拟合,最终达到传统神经网络无法比拟的预测效果。

此次采用了简单的三层卷积神经网络,即输入->卷积->激活(relu)->池化->全连接。详细介绍如下:

输入为cifar-10的图像数据:[32*32*3](一个宽32,高32,RGB三通道的图像)。

卷积层将计算连接到输入局部区域的神经元的输出,每个神经元计算它们的权值与它们在输入体积中连接的一个小区域之间的点积。这里我们设置的卷积层[32,7,7,3](stride:1,padding:3)。所以通过卷积层后数据将变为[32*32*32]。

激活函数为:f(x)=max(0, x)。这个步骤并不改变数据结构的变化。

采用maxpooling进行下采样,数据结构变为[32*16*16]。

全连接层(FC),我们设置两个全连接层。第一层设有500个隐含层,将数据拉成一列[1*4096],参数w2[4096*500],x与w2进行点乘后数据结构变为[1*500]。第二层设有10个隐含层,w3[500*10],x与w3进行点乘后数据结构变为[1*1*10]。最终输出的十个数就对应着每个类的得分。

网络结构如下图所示:

网络的前向传播,如网络结构所示分为一下几个步骤。

第一,卷积即将感受野内的各个通道像素与w1的参数点积相加。在程序中可以这样实现:

再将经过卷积后的数据激活,也就是通过f(x)=(0, max)的函数。右面采用池化下采样数据。

最后两个全连接结束前向传播。这里我们采用交叉熵作为损失函数。前向传播跟传统神经网络相似,只是多了卷积与池化很容易理解。

反向传播比较难理解,因为卷积和池化操作是单映射关系,Features maps与input本身不是一一对应的,再加上矩阵等复杂运算,让人看起来很难受,下面简单介绍一下。首先进行定义,卷积层输入:(bottom_data)a,卷积层输出(top_data)z。在正向传播是,将进行预处理方便计算的矩阵形式bottom_data_col_buff,设为a~。只考虑一个样本一个输入通道一个输出通道的情况如下:(实例中卷积核size[3*3],stride =2,pad=1,bottom_data不包括四周填充的0)

回到我们卷积计算的反向传播上面,我们参考上面那张图,对于输入图像中的中心点,在正向传播时一共计算了9(3*3)次,例如a = A*kernel[3*3]+F,F是与A无关部分,在求导时会被约掉。所以在反向传播时,有一部分的贡献时kernel[3*3]这个[3*3]刚好时翻转后的kernel中对应位置实际值。所以卷积层输入的delta计算等于卷积层输出的delta与翻转后的Kernel进行卷积。

代码分为4个步骤:

1. 对输入进行padding操作;

2. 对卷积核参数进行翻转;

3. 对卷积核进行转置操作;

4. 对翻转后的卷积核与padding后的delta进行卷积操作。

除此以外,我们还要考虑很多超参数,比如:我们要选择哪种梯度下降的方法sgd,sgd+momentum,adam,还是rmsprop,学习率,迭代次数等等。最终我在程序中选择了如图这些超参数。

因为cpu处理这些图像数据集参数过多,处理速度缓慢,超参数调试次数有限,加上网络结构过于简单,层数太浅,所以分类效果不好,但即使只使用一层卷积,它的效果还是优于传统神经网络的。我曾经使用过传统神经网络来实现分类,效果如下图。

而简单的三层卷积神经网络的分类效果如图。

从效果来看,卷积神经网络的优点有以下几点:分类正确率较高(加深层数可以实现很好的正确率);从测试与训练集的正确率来看,卷积神经网络有更好的拟合效果(由于pooling与dropout等作用,没有过拟合的迹象)。

喜欢的这篇文章的朋友可以关注下方公众号,会为大家推送一些关于深度学习生活等有用的图文。感谢大家的观看。

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值