CNN实现手写数字识别
卷积神经网络介绍
卷积神经网络它的优点在于,需要调优的参数比全连接神经网络少的多,因此他的训练速度会快很多。一般多用于做视觉识别。
什么是卷积
下面我们来看一下这张图片,从下图我们可以看到
- 左边这个二维矩阵表示的是一张661的图片,661意思是一张长为6宽为6通道数为1的图片,一张彩色的图片的通道数是3,所以我们调颜色有三个值分别是RGB。
- 中间是一个33的一个二维矩阵,33的大小也不是固定的,可以根据实际情况取值。。在卷积神经网络中称为卷积核或者过滤器,它就是整个神经网络要训练取得的参数。一开始初始化时可以随便赋值。这个卷积核相当于从图像矩阵中不停的移动,每次移动一格,从而得到最右边的另外一张图片。比如从左上角开始计算31+00+1*-1+11+50+8*-1+21+70+2*-1 = -5。
- 假设我们有一张图像是NN的,过滤器FF,最后得到(N-F+1)(N-F+1)的图像。下图中输入的是一张66的图像,输出的是一张4*4的图像。**这样就会有两个缺点:一是一张图片经过层层的卷积之后,输出的图片越来越小了。那应该怎么保证输出的图片保持原来的大小呢,请看下一个知识点padding。**二是边缘的值因为被计算的次数较少,因此可能会丢失调边缘的特征。
padding
padding的中文意思是填充,大概意识是要不要在图像周围用0填充。padding有两种,一种是valid,另一种是same。valid模 式即是输出的图像不需要与原图像大小相等,same模式即是输出的图像需要与原图像大小相等。但是要在图像周围填充多少层0才能保证输出的图像与原图像等大小呢。
假设加一圈0则P = 1,那么图像的大小又原来的6变成了吧,即N+2P。上面我已经给出了计算输出图像大小的公式:输出图像大小 : (N-F+1)(N-F+1),现在变成了(N+2P-F+1) (N+2P-F+1).因为输入的大小等于输出的大小所以:
N+2P-F+1)= N,推出 P = (F-1)/2