手写体数字识别调参

以CNN, mnist 数据集合的调参数为例子.数据被分成了,训练集合for train, 测试集for test,还是就是自己手写的数据作为验证集for valiate.

以lenet5 为例子,构建网络,进行训练,一般情况下,test能达到99%以上的精度.但是在验证集合上,精确度上不去.

分析可能影响训练的参数有

1.是否归一化,影响感觉不大,但是一定要归一,这样训练更容易收敛.

2.是否进行反色处理,感觉有影响,但是影响不大,建议是使用白底黑字来训练(开始,我认为,黑底白字,更节省空间和计算,因为为0的底纹更多嘛,但是把CNN识别的过程打印出来,发现提取特征的方式,正反其实区别不大).

3.通道的处理,由于mnist 的数据都是28x28x1单通道的,所以,lenet 用上x3的通道,数据反而,会影响识别.所以干脆就都用单通道更好.

4.数据集合的问题,集合涵盖的数据越全面,即字形包括的越广泛,空间越完整,识别的可能性就越大.所以使用mnist 中emnist-digits 集合,train 24w ,test 4w (mnist train 6w,test 1w).

5.数据维度的处理28x28x1 效果好一点,resize 或填充到32x32x1效果反而不佳.

6.learning_rate moment,虽然会影响到训练的速度,但是对于精确的的应该没那么大(实验发现lr=1e-1,时loss下不去的时候,是学习率太大了,loss=1e-4同样,loss 下不去的时候,还是太小了).

7.dropout 参数影响大,原lenet5是没有dropout 层的.在validate 上效果不好.加上dropout 之后,精度大大提升,(dropout =0.6-0.9,注意测试和验证时要关掉,dropout越大参数丢弃率越大,loss下降越慢,但是泛化能力越强)

8.验证数据预处理的重要性,因为训练数据中,采集的数据边框和比例是有一定限度的.而我们自己手写采集的数据,通常难把握比例,这个要更具实际情况进行处理,(1RGB2GRAY 2 threhold 增强比例 3 pad 按照比例进行补边 )

在处理了以上问题之后,mnist-digits 数据集训练处理的模型,在我自己的验证集合上(10个人,300多个数据), 字形的验证上,基本达到百分百的识别.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值