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 时间处理datetime实例
Sep 06 Python
Python去除字符串两端空格的方法
May 21 Python
Python用UUID库生成唯一ID的方法示例
Dec 15 Python
Python模拟登陆实现代码
Jun 14 Python
一文带你了解Python中的字符串是什么
Nov 20 Python
django迁移数据库错误问题解决
Jul 29 Python
pytorch实现建立自己的数据集(以mnist为例)
Jan 18 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
Jun 22 Python
python 批量将中文名转换为拼音
Feb 07 Python
Python djanjo之csrf防跨站攻击实验过程
May 14 Python
Python闭包的定义和使用方法
Apr 11 Python
Python中time标准库的使用教程
Apr 13 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
超强分页类2.0发布,支持自定义风格,默认4种显示模式
2007/01/02 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
php比较相似字符串的方法
2015/06/05 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
Javascript select下拉框操作常用方法
2009/11/09 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
使用AngularJS制作一个简单的RSS阅读器的教程
2015/06/18 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
2017/12/29 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
小程序实现密码输入框
2020/11/16 Javascript
python开发中module模块用法实例分析
2015/11/12 Python
深入源码解析Python中的对象与类型
2015/12/11 Python
python求最大连续子数组的和
2018/07/07 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
python 实现求解字符串集的最长公共前缀方法
2018/07/20 Python
python+selenium实现QQ邮箱自动发送功能
2019/01/23 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
Django实现简单网页弹出警告代码
2019/11/15 Python
Python中实现一行拆多行和多行并一行的示例代码
2020/09/06 Python
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
PUMA官方商城:世界领先的运动品牌之一
2016/11/16 全球购物
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
Delphi工程师笔试题
2013/09/21 面试题
营销主管自我评价怎么写
2013/09/19 职场文书
体育教育毕业生自荐信
2013/11/21 职场文书
用Python将GIF动图分解成多张静态图片
2021/06/11 Python
使用python创建股票的时间序列可视化分析
2022/03/03 Python
如何基于python实现单目三维重建详解
2022/06/25 Python