手写体

机器学习Tensorflow基于MNIST数据集识别自己的手写数字(读取和测试自己的模型)

一笑奈何 提交于 2019-12-05 09:04:24
更新: 2018.11.9: 我把代码,模型,测试图片放上来了,可以下载了,记得自行配置相关库 下载地址: https://download.csdn.net/download/qq_38269418/10774623 另外,有个网址很有意思,以前忘记放上来了,可以帮你很好理解神经网络的模型! http://scs.ryerson.ca/~aharley/vis/conv/ 2018.12.5: 上面那个网址好像现在需要挂VPN了,不然打不开 以下为原博: 废话不多说,先上效果图 整体来看,效果是非常不错的,模型的训练,参照官方代码mnist_deep.py,准确率是高达99.2% 那么,我是怎么实现的呢? 一.读懂卷积神经网络代码(至少得把程序跑通) 首先参照Tensorflow中文社区教程传送门: http://www.tensorfly.cn/tfdoc/tutorials/mnist_pros.html 能在自己的环境中成功运行代码,具体代码的实现我就不在这里具体赘述了,因为关于代码的文章太多了,百度都能一大堆。博主是参照了Tensorflow中社区教程如图: (注意一点:关于教程的print函数) 在博主用的Python3.6版本中,print已经成为了一个函数,而在Python2.7当中print不是一个函数,这里博主是需要加上括号。 所以根据自己所用的版本,更改这里

MNIST | 基于k-means和KNN的0-9数字手写体识别

匆匆过客 提交于 2019-12-05 09:03:48
MNIST | 基于k-means和KNN的0-9数字手写体识别 1 背景说明 2 算法原理 3 代码实现 3.1 文件目录 3.2 核心代码 4 实验与结果分析 5 后记 概要: 本实验是在实验“ kaggle|基于k-means和KNN的语音性别识别 ”、实验“ MNIST|基于朴素贝叶斯分类器的0-9数字手写体识别 ”以及实验“ 算法|k-means聚类 ”的基础上进行的,把k-means聚类和CNN识别应用到数字手写体识别问题中去。有关MINIST数据集和kmeans+KNN的内容可以先看我的上面三篇博文,本实验的代码依然是MATLAB。 关键字: 数字手写体识别; k-means; KNN; MATLAB; 机器学习 1 背景说明    我在我的 上上篇博文 中提到会把kmeans聚类算法用到诸如语音性别识别和0-9数字手写体识别等具体问题中去, 语音性别识别的实验 已经在11月2号完成,现在来填0-9数字手写体识别的坑。由于本篇博客承接了我之前若干篇博客,而MNIST数据集、kmeans以及KNN算法的原理和用法等内容均已在之前提到过,所以这里不再专门说明。 2 算法原理    可以将本次实验思路概括如下:    S1:训练时,将训练集中0-9对应的数据各聚成k类,共计10k个聚类中心;    S2:验证时

MNIST手写体识别任务

回眸只為那壹抹淺笑 提交于 2019-12-05 09:02:00
下面我们介绍一个神经网络中的经典示例,MNIST手写体识别。这个任务相当于是机器学习中的HelloWorld程序。 MNIST数据集介绍 MNIST是一个简单的图片数据集,包含了大量的数字手写体图片。下面是一些示例图片: MNIST数据集是含标注信息的,以上图片分别代表5, 0, 4和1。 由于MNIST数据集是TensorFlow的示例数据,所以我们不必下载。只需要下面两行代码,即可实现数据集的读取工作: from tensorflow .examples .tutorials .mnist import input_data mnist = input_data. read_data_sets ( "MNIST_data/" , one_hot=True) MNIST数据集一共包含三个部分:训练数据集(55,000份,mnist.train)、测试数据集(10,000份,mnist.test)和验证数据集(5,000份,mnist.validation)。一般来说,训练数据集是用来训练模型,验证数据集可以检验所训练出来的模型的正确性和是否过拟合,测试集是不可见的(相当于一个黑盒),但我们最终的目的是使得所训练出来的模型在测试集上的效果(这里是准确性)达到最佳。 MNIST中的一个数据样本包含两块:手写体图片和对于的label。这里我们用 xs 和 ys

DCGAN例子学习-MNIST 手写体数字生成

≡放荡痞女 提交于 2019-12-05 08:03:06
参考代码: https://github.com/FacelessManipulator/keras-dcgan/blob/master/dcgan.py 参考文章: https://www.leiphone.com/news/201703/Y5vnDSV9uIJIQzQm.html 生成对抗网络(Generative Adversarial Networks,GAN)最早由 Ian Goodfellow 在 2014 年提出,是目前深度学习领域最具潜力的研究成果之一。它的核心思想是:同时训练两个相互协作、同时又相互竞争的深度神经网络(一个称为生成器 Generator,另一个称为判别器 Discriminator)来处理无监督学习的相关问题。在训练过程中,两个网络最终都要学习如何处理任务。 通常,我们会用下面这个例子来说明 GAN 的原理:将警察视为判别器,制造假币的犯罪分子视为生成器。一开始,犯罪分子会首先向警察展示一张假币。警察识别出该假币,并向犯罪分子反馈哪些地方是假的。接着,根据警察的反馈,犯罪分子改进工艺,制作一张更逼真的假币给警方检查。这时警方再反馈,犯罪分子再改进工艺。不断重复这一过程,直到警察识别不出真假,那么模型就训练成功了。 一、源码分析: (1) 生成器generator_model def generator_model(): model =

使用PCA进行特征降维

孤人 提交于 2019-12-02 05:44:50
特征降维: 特征降维是无监督学习的另一个应用,目的有二:其一,我们会经常在实际项目中遭遇特征维度非常之高的训练样本,而往往又无法借助自己的领域知识人工构建有效特征; 其二,在数据表现方面,我们无法用肉眼观测超过三个维度的特征。因此,特征降维不仅重构了有效的低维度特征向量,同时也为数据展现提供了可能。 在特征降维的方法中,主成分分析是最为经典和实用的特征降维技术,特别在辅助图像识别方面有突出的表现。 如何用矩阵的秩来判别向量组的线性相关性: m×n 矩阵 A ,如果 r(A) = m < n,则行向量组无关,列向量组相关, 如果 r(A) = k < min(m,n),则行向量组、列向量组都相关, 如果 r(A) = n < m,则列向量组无关,行向量组相关。 如果 r(A) = m = n ,则行向量组、列向量组都无关。 如下图代码所示,我们有一组2*2的数据[(1,2),(2,4)]。假设这两个数据都反映到一个类别(分类)或者一个类簇(聚类)。如果我们的学习模型模型是线性模型,那么这两个数据其实只能帮助权重参数更新一次,因为他们线性相关,所有的特征数值都只是扩张了相同的倍数;如果使用PCA分析的话,这个矩阵的“秩”是1,也就是说,在多样性程度上,这个矩阵只有一个自由度。 #--线性相关矩阵秩计算样例 #导入numpy工具包 import numpy as np #初始化一个2

tesseract训练手写体

穿精又带淫゛_ 提交于 2019-11-26 12:24:54
前面的步骤都一样,从第4步开始 4、使用tesseract生成.box文件: tesseract eng.handwriting.exp0.tif eng.handwriting.exp0 -l eng -psm 7 batch.nochop makebox 5、矫正一下识别有问题的字符 6、生成font_properties文件: 只要字符部分,不要语言部分,也不要exp【数字】这里 echo handwriting 0 0 0 0 0 >font_properties 7、使用tesseract生成.tr训练文件: tesseract eng.handwriting.exp0.tif eng.handwriting.exp0 nobatch box.train 成功生成一个tr文件 8、生成字符集文件: unicharset_extractor eng.handwriting.exp0.box 9、生成shape文件: shapeclustering -F font_properties -U unicharset -O eng.handwriting.exp0.unicharset eng.handwriting.exp0.tr 会生成 shapetable 和 zwp.unicharset 两个文件。 10、生成聚字符特征文件: 会生成 inttemp、pffmtable

MNIST手写体识别入门程序整理

会有一股神秘感。 提交于 2019-11-26 04:00:00
MNIST手写体识别入门程序整理 我自己觉得Tensorflow中文官网是个学习的好地方,mnist新手入门有详细的教程,可以把链接分享给大家。 http://www.tensorfly.cn/tfdoc/tutorials/mnist_beginners.html 由于教程里面程序是散的,鉴于有一些懒虫程序员不想自己敲代码,所以我把代码整理了一下,只要将下面的代码复制粘特到python编辑器里,直接运行就可以自动下载数据包,并将结果给出。 import tensorflow.examples.tutorials.mnist.input_data as input_data mnist = input_data.read_data_sets(“MNIST_data/”, one_hot=True) import tensorflow as tf x = tf.placeholder(“float”, [None, 784]) W = tf.Variable(tf.zeros([784,10])) b = tf.Variable(tf.zeros([10])) y = tf.nn.softmax(tf.matmul(x,W) + b) y_ = tf.placeholder(“float”, [None,10]) cross_entropy = -tf.reduce_sum(y_