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 相关文章推荐
Python 字典dict使用介绍
Nov 30 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
Jun 27 Python
Python常见格式化字符串方法小结【百分号与format方法】
Sep 18 Python
Python MySQL数据库连接池组件pymysqlpool详解
Jul 07 Python
基于python批量处理dat文件及科学计算方法详解
May 08 Python
python监控文件并且发送告警邮件
Jun 21 Python
python列表使用实现名字管理系统
Jan 30 Python
打包python 加icon 去掉cmd黑窗口方法
Jun 24 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
Nov 16 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
Apr 14 Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
Oct 22 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
Look And Say 序列php实现代码
2011/05/22 PHP
php在线代理转向代码
2012/05/05 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
细品javascript 寻址,闭包,对象模型和相关问题
2009/04/27 Javascript
js对象数组按属性快速排序
2011/01/31 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
详谈JS中实现种子随机数及作用
2016/07/19 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
2017/01/04 Javascript
vue.js开发环境安装教程
2017/03/17 Javascript
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
详解微信第三方小程序代开发
2017/06/23 Javascript
vue中的scope使用详解
2017/10/29 Javascript
详解vue 单页应用(spa)前端路由实现原理
2018/04/04 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
python 调用win32pai 操作cmd的方法
2017/05/28 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
详解python 3.6 安装json 模块(simplejson)
2019/04/02 Python
关于python中密码加盐的学习体会小结
2019/07/15 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
python 密码学示例——凯撒密码的实现
2020/09/21 Python
公务员年总结的自我评价
2013/10/25 职场文书
运动会致辞稿50字
2014/02/04 职场文书
早会主持词
2014/03/17 职场文书
《英英学古诗》教学反思
2014/04/11 职场文书
施工协议书范本
2014/04/22 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
白酒代理协议书范本
2014/10/26 职场文书
模范教师事迹材料
2014/12/16 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
JavaScript异步操作中串行和并行
2021/11/20 Javascript