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实现检测服务器是否可以ping通的2种方法
Jan 01 Python
django接入新浪微博OAuth的方法
Jun 29 Python
python+selenium实现163邮箱自动登陆的方法
Dec 31 Python
python自动截取需要区域,进行图像识别的方法
May 17 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
Aug 02 Python
python批量修改图片后缀的方法(png到jpg)
Oct 25 Python
python selenium执行所有测试用例并生成报告的方法
Feb 13 Python
Python学习笔记之While循环用法分析
Aug 14 Python
Python高级特性——详解多维数组切片(Slice)
Nov 26 Python
Python+Redis实现布隆过滤器
Dec 08 Python
使用keras实现densenet和Xception的模型融合
May 23 Python
Pandas把dataframe或series转换成list的方法
Jun 14 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
php+mysql数据库查询实例
2015/01/21 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
PHP字符串中抽取子串操作实例分析
2019/06/22 PHP
php 策略模式原理与应用深入理解
2019/09/25 PHP
初学Javascript的一些总结
2008/11/03 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
使用DNode实现php和nodejs之间通信的简单实例
2015/07/06 NodeJs
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
2015/11/24 Javascript
基于 Node.js 实现前后端分离
2016/04/23 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
python导包的几种方法(自定义包的生成以及导入详解)
2019/07/15 Python
python框架django项目部署相关知识详解
2019/11/04 Python
Python with标签使用方法解析
2020/01/17 Python
使用Python和百度语音识别生成视频字幕的实现
2020/04/09 Python
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
专科毕业生自我鉴定
2013/12/01 职场文书
班级活动策划书
2014/02/06 职场文书
2014年三八妇女节活动总结
2014/03/01 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
2014年文秘工作总结
2014/11/25 职场文书
就业意向书范本
2015/05/11 职场文书
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS