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调用cmd复制文件代码分享
Dec 27 Python
python求斐波那契数列示例分享
Feb 14 Python
python创建线程示例
May 06 Python
python中dir函数用法分析
Apr 17 Python
Python函数式编程
Jul 20 Python
python里dict变成list实例方法
Jun 26 Python
Python实现基于SVM的分类器的方法
Jul 19 Python
django表单的Widgets使用详解
Jul 22 Python
Django REST framework 如何实现内置访问频率控制
Jul 23 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
Aug 13 Python
Python解压 rar、zip、tar文件的方法
Nov 19 Python
解决Keras 中加入lambda层无法正常载入模型问题
Jun 16 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 安全过滤函数代码
2011/05/07 PHP
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
Javascript 写的简单进度条控件
2008/01/22 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
JavaScript 上万关键字瞬间匹配实现代码
2013/07/07 Javascript
jQuery中:first-child选择器用法实例
2014/12/31 Javascript
JavaScript判断是否为数字的4种方法及效率比较
2015/04/01 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
AngularJS与BootStrap模仿百度分页的示例代码
2018/05/23 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
python如何将两张图片生成为全景图片
2020/03/05 Python
解决pip install psycopg2出错问题
2020/07/09 Python
Python利用命名空间解析XML文档
2020/08/10 Python
numpy实现RNN原理实现
2021/03/02 Python
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
Booking.com亚太地区:Booking.com APAC
2020/02/07 全球购物
小学生自我评价范例
2013/09/24 职场文书
办公室前台的岗位职责
2013/12/20 职场文书
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
高三高考决心书
2014/03/11 职场文书
英文请假条
2014/04/11 职场文书
党员教师一句话承诺
2014/05/30 职场文书
保护校园环境倡议书
2015/04/28 职场文书
LayUI+Shiro实现动态菜单并记住菜单收展的示例
2021/05/06 Javascript
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记