用TensorFlow做Kaggle“手写识别”达到98%准确率-详解

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

上一期,我们用Tensorflow实现了Kaggle的手写识别项目,但准确率比较低,只有92%,这次我们打算把识别的准确率提升到98%以上。

为什么不是上次说的提升到99%以上呢?因为92%到98%是比较容易的,而再从98%到99%是要费不少功夫的,一篇文章难以承载这么多内容,所以将会分成两篇文章,首先是从92%到98%,下一次是从98%到99%。

不要小看提升1%,越往后面,难度就越大。如果我们做到99%准确率,在Kaggle的手写识别这个项目上,也就进入了前25%了,可以说入门了。

回顾上期

上期我们学习了梯度下降、神经网络、损失函数、交叉熵等概念,然后用42000张图片数据训练了一个简单的神经网络,准确度92%。可以说,这只是一个Hello World。

Hello World

如何进行改进

首先,这次我们将使用卷积神经网络来进行图片识别。众所周知,卷积神经网络对于图片识别是非常有效的。

这里我打算这样来构建这个卷积神经网络:

卷积层1+池化层1+卷积层2+池化层2+全连接1+Dropout层+输出层

然而,什么是卷积神经网络?什么是卷积层、池化层、全连接层?Dropout又是什么鬼?

1、什么是卷积神经网络?

我们人看到一幅图像,眨眼之间就知道图像中有什么,图像中的主体在干什么。但计算机不同,计算机看到的每一副图像都是一个数字矩阵。那我们怎么让计算机从一个个数字矩阵中得到有用的信息呢,比如边缘,角点?更甚一点,怎么让计算机理解图像呢?

对图像进行卷积,就是接近目标的第一步。

图像在计算机里的表示可能是这样的:

对图像卷积,就是求卷积核作用在图像后,得到的图像对于该卷积核的累加数值。这些累加的数值可以代表这个图片的一些特征。

如果是针对猫进行识别,人可能知道猫头,猫尾巴等特征。CNN对图片进行处理后,也会学习到一些特征,它可能不知道猫头、猫尾巴这些特征,但也会识别出一些我们可能看不出来的特征,CNN通过这些学习到的特征去做判断。

2、什么是卷积层

卷积层的作用是指对图片的矩阵进行卷积运算,得到一些数值,作为图片的某些特征

3、什么是池化层

池化曾的作用是对上层的数据进行采样,也就是只留下一部分,这样的作用是可以缩小数据量和模糊特征。

4、什么是全连接层

全连接层就是连在最后的分类器。前面卷积层和池化层进行处理后,得到了很多的特征,全连接层使用这些特征进行分类。比如识别数字,那就是对0~9的十个类别进行分类。

5、Dropout是什么?

Dropout层是为了防止CNN对训练样本过拟合,而导致处理新样本的时候效果不好,采取的丢弃部分激活参数的处理方式。

这里对这些概念的解释都是比较简单的,如果希望详细了解,可以看知乎的这个链接:

CNN卷积神经网络是什么?(https://www.zhihu.com/question/52668301)

代码实现

1 标签的处理

2 把数据分为训练集和验证集

3 定义处理数据的函数

4 定义网络的结构

5 定义各类参数

6 进行训练

生成结果

这里迭代20个周期:

7 验证集上的准确度

然后我们使用这个模型对Kaggle的测试集进行预测,并生成cvs格式的结果

8 生成结果

这里建议跑30轮以上,因为在验证集上有98.35%准确率,上传到Kaggle往往就只有百分之九十七点几的准确率了。

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Petrichor的专栏

深度学习: 感受野 (receptive field)

感受野的计算 主要与 卷积层 和 池化层 的 窗口大小 (size)、移动步长 (stride) 以及 填充 (padding) 有关。

2033
来自专栏深度学习

神经网络相关名词解释

很多人认为深度学习很枯燥,大部分情况是因为对深度学习的学术词语,特别是专有名词很困惑,即便对相关从业者,亦很难深入浅出地解释这些词语的含义。  相信读过此文的圈...

43311
来自专栏ATYUN订阅号

在不同的任务中,我应该选择哪种机器学习算法?

当开始研究数据科学时,我经常面临一个问题,那就是为我的特定问题选择最合适的算法。在本文中,我将尝试解释一些基本概念,并在不同的任务中使用不同类型的机器学习算法。...

3153
来自专栏深度学习

神经网络相关名词解释

很多人认为深度学习很枯燥,大部分情况是因为对深度学习的学术词语,特别是专有名词很困惑,即便对相关从业者,亦很难深入浅出地解释这些词语的含义。 

3747
来自专栏人工智能LeadAI

TensorFlow从0到1 | 第十章:NN基本功:反向传播的推导

上一篇 9 “驱魔”之反传大法 引出了反向传播算法,强调了其在神经网络中的决定性地位,并在最后窥探了算法的全貌。本篇将详细的讨论算法各方面的细节。尽管我们都能...

2855
来自专栏大数据互联网思维

KNN(K-近邻算法):靠跟自己关系的远近来做预测的算法

假设你是某影视网站序员中的一员。你们网站的用户热衷于观看《延禧攻略》《如懿传》这类古装宫廷剧,而你们平台有机会花1000万买下《扶摇》的版权。

1342
来自专栏ATYUN订阅号

【测试】技能测试问题和答案:测试图像处理数据科学家的25个问题

1)将以下图像格式匹配到正确的频道数。 灰度 RGB I.1个通道 II.2个通道 III.3个通道 IV.4个通道 A)RGB – > I,灰度-> II...

3475
来自专栏机器之心

从90年代的SRNN开始,纵览循环神经网络27年的研究进展

26612
来自专栏IT技术精选文摘

机器学习之预测分析模型

介绍 预测分析是基于以前收集的数据来预测未来的结果。它包括两个阶段: 训练阶段:从训练数据中学习一个模型。 预测阶段:使用模型预测未知或未来的结果。 预测模...

2516
来自专栏汪毅雄的专栏

机器学习之回归(二):广义线性模型(GLM)

本文在上篇线性回归的基础上,延伸到广义线性模型,并把广义线性模型目的、假设条件来源,指数族分布、连接函数等各个函数的关系都进行详细地解释。最后用两个常见的 GL...

9991

扫码关注云+社区