Tensorflow的MNIST手写

这段时间以来,一直在学习深度学习机器学习,但总感觉走不进去,有好多基本理论要学习,深度学习有好多框架,例如一些TensorFlow、Caffe、Keras、CNTK、Torch7、MXNet、Leaf、Theano、DeepLearning4、Lasagne、Neon,如果想了解一些框架的对于,可以关注这个博客。(借用博主的)我自己学的是tensorflow,虽然看了很多的东西,也照着敲了很多代码,但感觉还是少点什么,于是乎,就在此总结一下自己最近的一个小白历程:

所有机器学习(深度学习)的基本思路如下:

1.首先需要准备大量的数据(需要机器来学习),获取数据的方法(也称数据采集),可以通过爬虫来进行获取,也可以在网上寻找数据(购买)。获取数据后,还需要进行数据分析和数据清洗,获取的数据可能存在缺失值,并且可能不是你想要的格式,需要修改,在这里需要用的一些技术(python的numpy和pandas(对于数据的处理和分析,这是python自带的强大的库,学习机器学习这些也是一个基础))。数据准备好以后还要进行整理,需要有训练集和测试集(还可以有验证集)。每一个训练集元素都会有一个对应的标签,这样为了算法的优化。

2.接下来就要构建模型,构建模型也就是一个训练算法。训练算法有线性的和非线性,最开始入门都会学到一个最小二乘法,但由于计算量过大,一般不会使用。作为基础了解就好。如果有需要可以参考这里。使用最多的是SGD(随机梯度下降)。

3.使用训练集进行训练,进行误差判断,构建损失函数,不断优化算法,直到正确率达到最高。

4.在使用测试集进行学习器的泛化性能评估,评估方法一般包括三个:留出法,交叉验证法,自助法。

5.不仅要对这个学习器进行评估,还需要有衡量模型泛化能力的评价标准,也就是性能度量,常用方法:错误率与精度、查准率和查全率、ROC(受试者工作特征)/AUC(ROC曲线下的面积)、代价敏感错误率和代价曲线。

好了,不在废话,开始最基本的代码:(代码是照着敲写的,主要是进行思路整理)

(1)调用模块,在这里有一个代码,是有关MNIST的数据的使用,你可以选择调用这个代码。也可以直接贴代码:(在这里,)


(2)构建回归模型:定义x,y进行数据的输入(申请占位符),手写体的像素灰度为784,设置变量权重和偏置,并对变量进行初始化


(3)对权重和偏置进行初始化,使用卷积和池化


(4)进行卷积和全连接,两层卷积,每一个函数都在代码后有相应的解释。


(5)输出层:


(6)训练数据和进行模型评估:


简单总结一下:在数据的输入输出中,选择合适的算法,能使得数据结果更接近真实的答案,因此就需要不断地优化算法,增加合适的神经元,增加多层的卷积层(卷积,池化等一些方式),选择一些合适的激励函数。不断进行训练学习,让正确率提高。

猜你喜欢

转载自blog.csdn.net/qq_38354978/article/details/80237383