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下singleton模式的实现方法
Jul 16 Python
详解python 发送邮件实例代码
Dec 22 Python
定制FileField中的上传文件名称实例
Aug 23 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
Python中如何导入类示例详解
Apr 17 Python
使用python list 查找所有匹配元素的位置实例
Jun 11 Python
Python list与NumPy array 区分详解
Nov 06 Python
安装PyInstaller失败问题解决
Dec 14 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
Mar 06 Python
Python reduce函数作用及实例解析
May 08 Python
Expected conditions模块使用方法汇总代码解析
Aug 13 Python
关于python中模块和重载的问题
Nov 02 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
一些花式咖啡的配方
2021/03/03 冲泡冲煮
PHP 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
PDO::commit讲解
2019/01/27 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
一个简单的网站访问JS计数器 刷新1次加1次访问
2012/09/20 Javascript
鼠标滚轴控制文本框值的JS代码
2013/11/19 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
2014/01/26 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
jquery隔行换色效果实现方法
2015/01/15 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
JavaScript实现两个select下拉框选项左移右移
2017/03/09 Javascript
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
2017/05/09 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
Django开发中复选框用法示例
2018/03/20 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
python3.8下载及安装步骤详解
2020/01/15 Python
对pytorch的函数中的group参数的作用介绍
2020/02/18 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
2020/08/24 Python
Python pymysql模块安装并操作过程解析
2020/10/13 Python
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
给海归自荐信的建议
2013/12/13 职场文书
专项法律服务方案
2014/06/11 职场文书
民事赔偿协议书
2014/11/02 职场文书
讲座通知范文
2015/04/23 职场文书
舞蹈社团活动总结
2015/05/07 职场文书
2019年思想汇报
2019/06/20 职场文书