Lintcode题目
数字图像识别 给一张图片,图片里面写了一个数字可能是0-9,然后需要设计算法判断出这个数字是0-9中哪一个数字。软件:pycharm
框架:keras
网络:LeNet
输入,输出格式:.cvs文件
用keras框架实现手写数字识别
前言
人工智能入门项目,初学者练手,了解神经网络的搭建,见识经典的网络结构
一、经典网络LeNet5
Gradient based learning applied to document recognition
1.介绍论文里的LeNet5神经网络
LeNet5一共有八层,分别是:
①输入层:输入手写体是32*32像素的图片。
②卷积层C1:卷积层是用于提取特征,6个特征平面,大小是 28 ∗ 28 28*28 28∗28,因为是用的 5 ∗ 5 5*5 5∗5的卷积核来提取输入层的特征, 28 = 32 − 5 + 1 28=32-5+1 28=32−5+1。一共有 ( 5 ∗ 5 + 1 ) ∗ 28 ∗ 28 ∗ 6 = 122304 (5*5+1)*28*28*6=122304 (5∗5+1)∗28∗28∗6=122304 条连接,利用权值共享,所以这层有 ( 5 ∗ 5 + 1 ) ∗ 6 = 156 (5*5+1)*6=156 (5∗5+1)∗6=156权值需要训练。
③池化层S2:池化是为了降低数据维度。选取一定范围(下图选的 2 ∗ 2 2*2 2∗2)对范围内的数求和取平均,再加上一个权值和偏置得到结果。S2有6个特征平面,每个特征平面格式 14 ∗