基于CNN的Kaggle手写数字识别

具体代码和文本见我上传的资源:CNN和rf两种实现

提交次数:3 次运行环境:

python 版 本 :3.7.4 tenserflow 版本:2.0.0 numpy 版本:1.17.4

  1.  
  
CNN   实现:

 

使用两层卷积网络,在轮数不断连续增加但是准确率不增时停止。

定义交叉熵为损失函数,最小化交叉熵

 

准确率计算:

 

模型创建过程中需要创建权重和偏置项,权重在初始化时应该加入少量的噪声来打破对称性   以及避免 0 梯度。可以用较小的正数来初始化偏置项,以避免神经元节点输出恒为 0 的问题。为了不在建立模型的时候反复做初始化操作,我们定义两个函数用于初始化。举例:第一次卷积初   始化权重,输出 32 个通道

 

将数据集分成多个 batch,分批依次训练

 

训练:

 

数据增强:为了减少过拟合,在输出层之前加入 dropout。用 placeholder 来代表一个神经元的输出在 dropout 中保持不变的概率。加入 dropout 防止过拟合

命令行运行 digit.py 将结果存到 res.csv 中。将结果按照网站要求排版并提交,两次结果如下:

准确率:97.314%

可以看得出来绝大多数预测都正确,而预测错误的图片,多是因为图片具有迷惑性,即  使肉眼分辨也有可能识别错误。

 

  1. 结果分析与思考

提交三次,最佳结果准确率:97.314%。

使用全连接神经网络处理图像存在全连接层的参数太多的问题,参数增多除了导致计算速度   减慢,还很容易导致过拟合的问题,过拟合也是使用随机森林算法常见的一种错误。随机森林和   全链接神经网络无法很好地处理好图像数据,然而 CNN 却很好地克服了这些缺点。所以需要一个合理的神经网络结构来有效的减少神经网络中参数的个数,卷积神经网络就可以更好的达到这个   目的,原因就在于 CNN 在图像视觉处理上有着独特的优点,主要在于局部感知的应用适合处理图像的局部特征。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值