google机器学习笔记tf.learn手写文字识别

梦里茶 梦里茶     2022-11-29     749

关键词:

转载请注明作者:梦里风林
Google Machine Learning Recipes 7
官方中文博客 - 视频地址
Github工程地址 https://github.com/ahangchen/GoogleML
欢迎Star,也欢迎到Issue区讨论

mnist问题

  • 计算机视觉领域的Hello world
  • 给定55000个图片,处理成28*28的二维矩阵,矩阵中每个值表示一个像素点的灰度,作为feature
  • 给定每张图片对应的字符,作为label,总共有10个label,是一个多分类问题

TensorFlow

  • 可以按教程用Docker安装,也可以直接在Linux上安装
  • 你可能会担心,不用Docker的话怎么开那个notebook呢?其实notebook就在主讲人的Github页
  • 可以用这个Chrome插件:npviewer直接在浏览器中阅读ipynb格式的文件,而不用在本地启动iPython notebook
  • 我们的教程在这里:ep7.ipynb
  • 把代码从ipython notebook中整理出来:tflearn_mnist.py

代码分析

  • 下载数据集
mnist = learn.datasets.load_dataset('mnist')

恩,就是这么简单,一行代码下载解压mnist数据,每个img已经灰度化成长784的数组,每个label已经one-hot成长度10的数组

在我的深度学习笔记看One-hot是什么东西

  • numpy读取图像到内存,用于后续操作,包括训练集(只取前10000个)和验证集
data = mnist.train.images
labels = np.asarray(mnist.train.labels, dtype=np.int32)
test_data = mnist.test.images
test_labels = np.asarray(mnist.test.labels, dtype=np.int32)
max_examples = 10000
data = data[:max_examples]
labels = labels[:max_examples]
  • 可视化图像
def display(i):
    img = test_data[i]
    plt.title('Example %d. Label: %d' % (i, test_labels[i]))
    plt.imshow(img.reshape((28, 28)), cmap=plt.cm.gray_r)
    plt.show()

用matplotlib展示灰度图

  • 训练分类器
    • 提取特征(这里每个图的特征就是784个像素值)
feature_columns = learn.infer_real_valued_columns_from_input(data)
  • 创建线性分类器并训练
classifier = learn.LinearClassifier(feature_columns=feature_columns, n_classes=10)
classifier.fit(data, labels, batch_size=100, steps=1000)

注意要制定n_classes为labels的数量

  • 分类器实际上是在根据每个feature判断每个label的可能性,
  • 不同的feature有的重要,有的不重要,所以需要设置不同的权重
  • 一开始权重都是随机的,在fit的过程中,实际上就是在调整权重

  • 最后可能性最高的label就会作为预测输出

    • 传入测试集,预测,评估分类效果
result = classifier.evaluate(test_data, test_labels)
print result["accuracy"]

速度非常快,而且准确率达到91.4%

可以只预测某张图,并查看预测是否跟实际图形一致

# here's one it gets right
print ("Predicted %d, Label: %d" % (classifier.predict(test_data[0]), test_labels[0]))
display(0)
# and one it gets wrong
print ("Predicted %d, Label: %d" % (classifier.predict(test_data[8]), test_labels[8]))
display(8)
  • 可视化权重以了解分类器的工作原理
weights = classifier.weights_
a.imshow(weights.T[i].reshape(28, 28), cmap=plt.cm.seismic)

  • 这里展示了8个张图中,每个像素点(也就是feature)的weights,
  • 红色表示正的权重,蓝色表示负的权重
  • 作用越大的像素,它的颜色越深,也就是权重越大
  • 所以权重中红色部分几乎展示了正确的数字

Next steps

学习笔记tf042:tf.learn分布式estimator深度学习estimator

TF.Learn,TensorFlow重要模块,各种类型深度学习及流行机器学习算法。TensorFlow官方ScikitFlow项目迁移,谷歌员工IlliaPolosukhin、唐源发起。Scikit-learn代码风格,帮助数据科学从业者更好、更快适应接受TensorFlow代码。囊括许多TensorFlow... 查看详情

手写数字识别的k-近邻算法实现

...创,请勿在未经允许的情况下转载)前言手写字符识别是机器学习的入门问题,k-近邻算法(kNN算法)是机器学习的入门算法。本文将介绍k-近邻算法的原理、手写字符识别问题分析、手写字符识别的kNN实现、测试。kNN算法原理kN... 查看详情

机器学习实战笔记-k近邻算法3(手写识别系统)

1准备数据:将图像转换为测试向量这次数据集还是有两种,训练数据集和测试数据集,分别有2000个,900个。我们将把一个32*32的二进制图像矩阵转换为1x1024的向量,这样前两节使用的分类器就可以处理数字图像信息了。代码:defi... 查看详情

andrewng机器学习课程笔记————通过初步的神经网络实现手写数字的识别(尽力去向量化实现)

上一篇我总结了自己在学完逻辑回归后,实现了对手写数字的初步识别,在学完了Andrew教授的神经网络简易教程后,趁着知识刚学完没多久,记下了自己在运用简易神经网络实现手写数字识别过程中的总结和问题^_^ 菜鸡QP的... 查看详情

tf.learn学习

官网地址:https://www.tensorflow.org/versions/r1.1/get_started/tflearn1.代码例子  实现自定义的Estimator  使用DNNClassifier解决鸢尾花分类问题  使用FtrlOptimizer优化器  使用随机森林解决鸢尾花分类问题  使用深宽网络  实现自... 查看详情

机器学习笔记-模式识别的应用场景之一简单车牌识别(代码片段)

一、关于模式识别        模式(Pattern)是指具有某种特定性质的感知对象。一般情况下,待观察的事物都具有时空分布信息。模式识别(PatternRecognition)又称为模式分类,指对待观察事物的各种信息... 查看详情

斯坦福大学andrewng-机器学习笔记--推荐系统&大规模机器学习&图片文字识别

  大概用了一个月,AndrewNg老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结。笔记难免有遗漏和误解,欢迎讨论。  鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深表感谢... 查看详情

google机器学习笔记4-6分类器相关

转载请注明作者:梦里风林GoogleMachineLearningRecipes4官方中文博客-视频地址Github工程地址https://github.com/ahangchen/GoogleML欢迎Star,也欢迎到Issue区讨论Recipes4Let’sWriteaPipeline复习与强化概念监督学习基础套路例子:一个用于... 查看详情

coursera机器学习week11笔记

Applicationexample:PhotoOCRProblemdescriptionandpipeline图像文字识别应用所作的事是,从一张给定的图片中识别文字。这比从一份扫描文档中识别文字要复杂的多。 为了完成这样的工作,需要采取如下步骤:1.文字侦测(Textdetection)&mda... 查看详情

机器学习教程十四-利用tensorflow做手写数字识别

模式识别领域应用机器学习的场景非常多,手写识别就是其中一种,最简单的数字识别是一个多类分类问题,我们借这个多类分类问题来介绍一下google最新开源的tensorflow框架,后面深度学习的内容都会基于tensorflow来介绍和演示... 查看详情

machinelearning:什么是机器学习

简介  在介绍机器学习之前,我想先列几个关于机器学习的例子:垃圾邮件检测:根据邮箱中的邮件,识别哪些是垃圾邮件,哪些不是。这样的模型,可以程序帮助归类垃圾邮件和非垃圾邮件。这个例子,我们应该都不陌生。... 查看详情

学习笔记tf024:tensorflow实现softmaxregression(回归)识别手写数字

...。MNIST(MixedNationalInstituteofStandardsandTechnologydatabase),简单机器视觉数据集,28X28像素手写数字,只有灰度值信息,空白部分为0,笔迹根据颜色深浅取[0,1],784维,丢弃二维空间信息,目标分0~9共10类。数据加载,data.read_data_s 查看详情

tensorflow学习笔记:mnist机器学习入门

...入门MNIST入手。通过这个例子,了解Tensorflow的工作流程和机器学习的基本概念。一 MNIST数据集    MNIST是入门级的计算机视觉数据集,包含了各种手写数字的图片。在这个例子中就是通过机器学习训练一个模型... 查看详情

吴恩达《机器学习系列课程》学习笔记

...,B站反而更像中国的YouTube。在B站上看到吴恩达的《机器学习系列课程》,看了看发现挺有意思,就梳理一下在此形成学习笔记。第一节:前言机器学习早已成为我们的日常。每当使用Google或Bing等搜索引擎时࿰... 查看详情

tensorflow学习笔记mnist手写数字识别(代码片段)

MNIST是机器学习中的Helloworld,前期准备要了解Softmax(multinomiallogistic)regressionMNIST的是一个简单的计算机视觉数据集,它包含一系列手写数字图片,我们将训练一个模型识别图片中的数字我们本次目的不是训练一个精准... 查看详情

机器学习笔记:多类逻辑回归

...开始 。这篇的主要目的,是从一堆服饰图片中,通过机器学习识别出每个服饰图片对应的分类是什么(比如:一个看起来象短袖上衣的图片,应该归类到T-Shirt分类)示例代码如下,这篇的代码略复杂,分成几个步骤解读:&n... 查看详情

google深度学习笔记

GoogleDeepLearningNotesGoogle深度学习笔记由于谷歌机器学习教程更新太慢,所以一边学习DeepLearning教程,经常总结是个好习惯,笔记目录奉上。Github工程地址:https://github.com/ahangchen/GDLnotes欢迎star,有问题可以到Issu... 查看详情

关于学习新知识以及如何做题思考

-----关于学习新的知识点-----(知乎前辈+自己)1.对于陌生的知识点---先做到了解【看书,网络,与人沟通】2.然后通过各种渠道去掌握知识点---还存在不掌握的专门处理3.通过习题巩固所学的知识4.最后能将知识点--以文字的形式... 查看详情