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批量修改文件后缀示例代码分享
Dec 24 Python
python构造icmp echo请求和实现网络探测器功能代码分享
Jan 10 Python
Python生成随机密码的方法
Jun 16 Python
简单了解Python matplotlib线的属性
Jun 29 Python
Python 使用folium绘制leaflet地图的实现方法
Jul 05 Python
Python脚本利用adb进行手机控制的方法
Jul 08 Python
Python Tkinter模块 GUI 可视化实例
Nov 20 Python
Python笔记之facade模式
Nov 20 Python
使用Python 自动生成 Word 文档的教程
Feb 13 Python
基于python3生成标签云代码解析
Feb 18 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
关于Python中*args和**kwargs的深入理解
Aug 07 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使用Image Magick将PDF文件转换为JPG文件的方法
2015/04/01 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
解决laravel session失效的问题
2019/10/14 PHP
laravel 之 Eloquent 模型修改器和序列化示例
2019/10/17 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
JavaScript去除空格的几种方法
2006/10/03 Javascript
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
2013/02/01 Javascript
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
概述BootStrap中role="form"及role作用角色
2016/12/08 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
vue 的点击事件获取当前点击的元素方法
2018/09/15 Javascript
Jquery使用each函数实现遍历及数组处理
2020/07/14 jQuery
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
不要用强制方法杀掉python线程
2017/02/26 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
Django  ORM 练习题及答案
2019/07/19 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
python异步Web框架sanic的实现
2020/04/27 Python
python中最小二乘法详细讲解
2021/02/19 Python
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
ColourPop美国官网:卡拉泡泡,洛杉矶彩妆品牌
2019/04/28 全球购物
高中家长寄语
2014/04/02 职场文书
省级青年文明号申报材料
2014/05/23 职场文书
清洁工个人总结
2015/03/04 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python