最终章 | TensorFlow战Kaggle“手写识别达成99%准确率

这是一个TensorFlow的系列文章,本文是第三篇,在这个系列中,你讲了解到机器学习的一些基本概念、TensorFlow的使用,并能实际完成手写数字识别、图像分类、风格迁移等实战项目。 文章将尽量用平实的语言描述、少用公式、多用代码截图,总之这将是一份很赞的入门指南。欢迎分享/关注。

上一篇文章,我们用CNN实现了手写识别

CNN网络模型举例

改进方案

1、 使用Keras框架,而不是用TensorFlow自己实现,提升编程效率

2、增加网络的深度,这里增加到了20层

3、每次卷积完之后,加入规范层

4、使用最新的SELU激活函数,这是Sepp Hochreiter最新发表在arXiv上的激活函数,Sepp是当年和Jürgen Schmidhuber 一起发明 LSTM 的神级人物。介绍参考这个链接:「自归一化神经网络」提出新型激活函数SELU(https://www.iana.org/domains/reserved)

理论知识补充(最小知识集)

1、BatchNormalization 的计算原理,优缺点

为了避免对数据的感应不铭感,会对数据做处理,使得数据的变化范围不会太大,这个处理叫normalization预处理。Batch normalization 的 batch 是批数据, 把数据分成小批小批进行随机梯度下降. 而且在每批数据进行前向传递 forward propagation 的时候, 对每一层都进行 normalization 的处理。 优点是可以避免数据对激活函数的饱和从而收敛到更好的结果,并且能减少训练时长。

2、rmsprop 优化器的原理,优缺点

RMSprop 是 Geoff Hinton 提出的一种以梯度的平方来自适应调节学习率的优化方法。 优点是,对于常见参数更新较小,自动更新,不用手动调节学习率 缺点是,因为公式中分母上会累加梯度平方,这样在训练中持续增大的话,会使学习率非常小,甚至趋近无穷小

3、池化层的计算原理

池化层是在几个数据中挑选出最能代表这个区域的,把一个区域简化成一个数值,可以取最大值、最小值、平均值。这样可以降低计算量,降低过拟合。

4、softmax与 sigmoid 激活函数的区别

sigmoid将一个real value映射到(0,1)的区间(当然也可以是(-1,1)),这样可以用来做二分类。

而softmax把一个k维的real value向量(a1,a2,a3,a4….)映射成一个(b1,b2,b3,b4….)其中bi是一个0-1的数值,b1到bn累加为1,然后可以根据bi的大小来进行多分类的任务,如取权重最大的一维。

5、categorical_crossentropy 的计算原理,为什么选择交叉熵而不是平均平方误差(MSE)

交叉熵计算原理是−[ylna+(1−y)ln(1−a)]。不选择MSE的原因是,使用MSE在Y取较大值时,权重和偏置的更新速度会很慢,而用交叉熵作为损失函数可以克服这个问题

代码实现

1、加载数据集,对数据集进行处理,把输入和结果进行分开

2、设相关参数

3、定义模型

4、查看模型结构,可视化模型

5、训练模型,保存和载入模型

6、生成预测结果

上传Kaggle看结果

请注意,训练是有一定随机性的,如果一次训练的不好,可以反复尝试训练。尽量准确度在99.2%以上,再生成提交结果。

kaggle结果

虽然手写识别已经有无数人做过了,但提交到Kaggle的只有1600多人,我们的结果在200多位,进入了前20%,对于新手来错,应该还可以了。

祝大家好运~~~~

原文发布于微信公众号 - 人工智能LeadAI(atleadai)

原文发表时间:2017-10-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

最全算法工程师面试题目整理(一)

1 基于每日用户搜索内容,假设只有少量已知商品的情况下,如何根据用户搜索内容获取平台内没有的新商品? ? ? 答案:这是一条类似于分词“新词获取问题”,答案是...

3706
来自专栏新智元

100页的机器学习入门书:只要有基础数学知识就能看懂!(免费下载)

书名The Hundred-Page Machine Learning Book,作者Andriy Burkov是Gartner的机器学习团队leader,人工...

472
来自专栏AI研习社

使用深度学习来理解道路场景

语义分割是深度学习的方法之一,通过语义分割,我们可以对图片中的每一个像素赋予含义,即将像素划分到一个预先设定的类中。从上边的 GIF 图可以看出,我们在语义切分...

632
来自专栏小樱的经验随笔

神经网络算法

我们在设计机器学习系统时,特别希望能够建立类似人脑的一种机制。神经网络就是其中一种。但是考虑到实际情况,一般的神经网络(BP网络)不需要设计的那么复杂,不需要包...

3354
来自专栏李智的专栏

斯坦福CS231n - CNN for Visual Recognition(8)-lecture6学习率更新、超参数调优

  训练深度网络时,让学习率随着时间退火通常很有帮助。如果学习率很高,系统的动能就过大,参数向量就会无规律地跳动,不能够稳定到损失函数更深更窄的部分去。

832
来自专栏机器学习算法全栈工程师

【TPAMI重磅综述】 SIFT与CNN的碰撞:万字长文回顾图像检索任务十年探索历程(上篇)

基于内容的图像检索任务(CBIR)长期以来一直是计算机视觉领域重要的研究课题,自20世纪90年代早期以来,研究人员先后设计了图像的全局特征,局部特征,卷积特征的...

964
来自专栏PPV课数据科学社区

KNN算法在保险业精准营销中的应用

一、KNN算法概述 KNN是Machine Learning领域一个简单又实用的算法,与之前讨论过的算法主要存在两点不同: 它是一种非参方法。即不必像线性回归、...

2806
来自专栏ATYUN订阅号

自动驾驶中机器学习算法应用大盘点

今天,机器学习算法被广泛应用于解决自动驾驶汽车制造的各种挑战问题中。人类将传感器数据处理集成到汽车的ECU(电子控制单元)中。 提高机器学习的利用率去完成新...

3374
来自专栏数据科学与人工智能

【机器学习】决策树

一棵树在现实生活中有许多类比,并且结果表明它广泛地影响机器学习,包括分类和回归。 在决策分析中,决策树可用于在视觉上和明确地表示决策和作出决策。 顾名思义,它是...

841
来自专栏AI研习社

为什么ResNet和DenseNet可以这么深?一文详解残差块为何有助于解决梯度弥散问题

传统的“提拉米苏”式卷积神经网络模型,都以层叠卷积层的方式提高网络深度,从而提高识别精度。但层叠过多的卷积层会出现一个问题,就是梯度弥散(Vanishing),...

3315

扫码关注云+社区