手写体识别
Posted 自挂逸夫楼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手写体识别相关的知识,希望对你有一定的参考价值。
此网络用了一个网络 + 三个并联的网络
第一个网络,识别ACBDE
结构:
输入 32 × 32 × 1
第一层:16个5*5的卷积核,relu激活,maxpool池化
第二层:32个3*3的卷积核,relu激活,maxpool池化
第三层:64个3*3的卷积核,tanh激活,maxpool池化
输出层:将第三层的输出变成一维向量,然后使用5个节点,最后用softmax激活
dropout = 0.6
网络出为分别为ABCDE的概率
网络准确率为98.12
第二个网络,识别A
结构:
输入 32 × 32 × 1
第一层:8个5*5的卷积核,relu激活,maxpool池化
第二层:16个3*3的卷积核,relu激活,maxpool池化
第三层:32个3*3的卷积核,tanh激活,maxpool池化
输出层:将第三层的输出变成一维向量,然后使用1个节点,最后用sigmoid激活
dropout = 0.5
网络输出为A的概率
网络准确率为99.1
第三个网络,识别C
结构:
输入 32 × 32 × 1
第一层:8个5*5的卷积核,relu激活,maxpool池化
第二层:16个3*3的卷积核,relu激活,maxpool池化
第三层:32个3*3的卷积核,tanh激活,maxpool池化
输出层:将第三层的输出变成一维向量,然后使用1个节点,最后用sigmoid激活
dropout = 0.6
网络输出为C的概率
网络准确率为99.2
第四个网络,识别E
结构:
输入 32 × 32 × 1
第一层:16个5*5的卷积核,relu激活,maxpool池化
第二层:32个3*3的卷积核,relu激活,maxpool池化
第三层:64个3*3的卷积核,tanh激活,maxpool池化
输出层:将第三层的输出变成一维向量,然后使用1个节点,最后用sigmoid激活
dropout = 0.4
网络输出为E的概率
网络准确率为98.9
首先将图片输入第一个网络
如果是A的概率最大
就放入第二个网络
若第二个网络判定A的概率 < 0.4
则将A的概率置为0之后寻找最大的概率,并将他作为输出
如果是C的概率最大
就放入第三个网络
若第三个网络判定C的概率 < 0.2
则将C的概率置为0之后寻找最大的概率,并将他作为输出
如果是E的概率最大
就放入第四个网络
若第四个网络判定E的概率 < 0.2
则将E的概率置为0之后寻找最大的概率,并将他作为输出
最后总体网络的查准率为98.29
查全率对于ABCDE分别是 97.86, 98.88, 98.99, 97.63, 98.28
使用11000张图片
8000张图片做训练集 3000张图片做验证集合
对于之前网络的比较:
第一层使用3*3的卷积核时 准确率<97.5
卷积层激活函数全部使用relu 准确率 < 93.0
只使用一个网络 准确率<98.12
因为图像较为简单 第一层使用大卷积核能更好的提取特征
因为是做分类问题,负数对于sigmoid和softmax均有影响
所以在最后一个卷积层使用tanh保留负数
用多个网络加大了神经网络深度的同时,减少了过拟合的出现
以上是关于手写体识别的主要内容,如果未能解决你的问题,请参考以下文章
手写数字识别基于matlab GUI知识库手写数字识别(写字板+图片)含Matlab源码 1227期
手写数字识别基于matlab GUI BP神经网络手写数字识别系统含Matlab源码 1639期