tensorflow实现softma识别MNIST


Posted in Python onMarch 12, 2018

识别MNIST已经成了深度学习的hello world,所以每次例程基本都会用到这个数据集,这个数据集在tensorflow内部用着很好的封装,因此可以方便地使用。

这次我们用tensorflow搭建一个softmax多分类器,和之前搭建线性回归差不多,第一步是通过确定变量建立图模型,然后确定误差函数,最后调用优化器优化。

误差函数与线性回归不同,这里因为是多分类问题,所以使用了交叉熵。

另外,有一点值得注意的是,这里构建模型时我试图想拆分多个函数,但是后来发现这样做难度很大,因为图是在规定变量就已经定义好的,不能随意拆分,也不能当做变量传来传去,因此需要将他们写在一起。

代码如下:

#encoding=utf-8 
__author__ = 'freedom' 
import tensorflow as tf 
 
def loadMNIST(): 
 from tensorflow.examples.tutorials.mnist import input_data 
 mnist = input_data.read_data_sets('MNIST_data',one_hot=True) 
 return mnist 
 
def softmax(mnist,rate=0.01,batchSize=50,epoch=20): 
 n = 784 # 向量的维度数目 
 m = None # 样本数,这里可以获取,也可以不获取 
 c = 10 # 类别数目 
 
 x = tf.placeholder(tf.float32,[m,n]) 
 y = tf.placeholder(tf.float32,[m,c]) 
 
 w = tf.Variable(tf.zeros([n,c])) 
 b = tf.Variable(tf.zeros([c])) 
 
 pred= tf.nn.softmax(tf.matmul(x,w)+b) 
 loss = tf.reduce_mean(-tf.reduce_sum(y*tf.log(pred),reduction_indices=1)) 
 opt = tf.train.GradientDescentOptimizer(rate).minimize(loss) 
 
 init = tf.initialize_all_variables() 
 
 sess = tf.Session() 
 sess.run(init) 
 for index in range(epoch): 
  avgLoss = 0 
  batchNum = int(mnist.train.num_examples/batchSize) 
  for batch in range(batchNum): 
   batch_x,batch_y = mnist.train.next_batch(batchSize) 
   _,Loss = sess.run([opt,loss],{x:batch_x,y:batch_y}) 
   avgLoss += Loss 
  avgLoss /= batchNum 
  print 'every epoch average loss is ',avgLoss 
 
 right = tf.equal(tf.argmax(pred,1),tf.argmax(y,1)) 
 accuracy = tf.reduce_mean(tf.cast(right,tf.float32)) 
 print 'Accracy is ',sess.run(accuracy,({x:mnist.test.images,y:mnist.test.labels})) 
 
 
if __name__ == "__main__": 
 mnist = loadMNIST() 
 softmax(mnist)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
利用Opencv中Houghline方法实现直线检测
Feb 11 Python
如何利用python查找电脑文件
Apr 27 Python
Python处理中文标点符号大集合
May 14 Python
解决python3读取Python2存储的pickle文件问题
Oct 25 Python
Python判断变量名是否合法的方法示例
Jan 28 Python
python处理DICOM并计算三维模型体积
Feb 26 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
Apr 27 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
Aug 30 Python
Python异常继承关系和自定义异常实现代码实例
Feb 20 Python
Anaconda使用IDLE的实现示例
Sep 23 Python
Python3+Django get/post请求实现教程详解
Feb 16 Python
超详细Python解释器新手安装教程
May 10 Python
wxpython实现图书管理系统
Mar 12 #Python
人生苦短我用python python如何快速入门?
Mar 12 #Python
tensorflow实现KNN识别MNIST
Mar 12 #Python
Python操作MySQL模拟银行转账
Mar 12 #Python
python3 图片referer防盗链的实现方法
Mar 12 #Python
tensorflow构建BP神经网络的方法
Mar 12 #Python
Python管理Windows服务小脚本
Mar 12 #Python
You might like
PHP SPL使用方法和他的威力
2013/11/12 PHP
php将字符串全部转换成大写或者小写的方法
2015/03/17 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
Javascript 圆角div的实现代码
2009/10/15 Javascript
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
JavaScript利用fetch实现异步请求的方法实例
2017/07/26 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法
2018/06/07 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
Vue框架TypeScript装饰器使用指南小结
2019/02/18 Javascript
微信小程序实现拼图小游戏
2020/10/22 Javascript
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
python基础教程之字典操作详解
2014/03/25 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
Python函数参数分类原理详解
2020/05/28 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
来自美国主售篮球鞋的零售商店:KICKSUSA
2017/11/28 全球购物
英国拳击装备购物网站:RDX Sports
2018/01/23 全球购物
丧事主持词大全
2014/04/02 职场文书
保证书范文大全
2014/04/28 职场文书
2014年外联部工作总结
2014/11/17 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
村官个人总结范文
2015/03/03 职场文书
酒桌上的祝酒词
2015/08/12 职场文书
golang elasticsearch Client的使用详解
2021/05/05 Golang