Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】


Posted in Python onDecember 19, 2019

本文实例讲述了Python tensorflow实现mnist手写数字识别。分享给大家供大家参考,具体如下:

非卷积实现

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
data_path = 'F:\CNN\data\mnist'
mnist_data = input_data.read_data_sets(data_path,one_hot=True) #offline dataset
x_data = tf.placeholder("float32", [None, 784]) # None means we can import any number of images
weight = tf.Variable(tf.ones([784,10]))
bias = tf.Variable(tf.ones([10]))
Y_model = tf.nn.softmax(tf.matmul(x_data ,weight) + bias)
#Y_model = tf.nn.sigmoid(tf.matmul(x_data ,weight) + bias)
'''
weight1 = tf.Variable(tf.ones([784,256]))
bias1 = tf.Variable(tf.ones([256]))
Y_model1 = tf.nn.softmax(tf.matmul(x_data ,weight1) + bias1)
weight1 = tf.Variable(tf.ones([256,10]))
bias1 = tf.Variable(tf.ones([10]))
Y_model = tf.nn.softmax(tf.matmul(Y_model1 ,weight1) + bias1)
'''
y_data = tf.placeholder("float32", [None, 10])
loss = tf.reduce_sum(tf.pow((y_data - Y_model), 2 ))#92%-93%
#loss = tf.reduce_sum(tf.square(y_data - Y_model)) #90%-91%
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(loss)
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init) # reset values to wrong
for i in range(100000):
  batch_xs, batch_ys = mnist_data.train.next_batch(50)
  sess.run(train, feed_dict = {x_data: batch_xs, y_data: batch_ys})
  if i%50==0:
    correct_predict = tf.equal(tf.arg_max(Y_model,1),tf.argmax(y_data,1))
    accurate = tf.reduce_mean(tf.cast(correct_predict,"float"))
    print(sess.run(accurate,feed_dict={x_data:mnist_data.test.images,y_data:mnist_data.test.labels}))

卷积实现

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
data_path = 'F:\CNN\data\mnist'
mnist_data = input_data.read_data_sets(data_path,one_hot=True) #offline dataset
x_data = tf.placeholder("float32", [None, 784]) # None means we can import any number of images
x_image = tf.reshape(x_data, [-1,28,28,1])
w_conv = tf.Variable(tf.ones([5,5,1,32])) #weight
b_conv = tf.Variable(tf.ones([32]))    #bias
h_conv = tf.nn.relu(tf.nn.conv2d(x_image , w_conv,strides=[1,1,1,1],padding='SAME')+ b_conv)
h_pool = tf.nn.max_pool(h_conv,ksize=[1,2,2,1],strides=[1,2,2,1],padding='SAME')
w_fc = tf.Variable(tf.ones([14*14*32,1024]))
b_fc = tf.Variable(tf.ones([1024]))
h_pool_flat = tf.reshape(h_pool,[-1,14*14*32])
h_fc = tf.nn.relu(tf.matmul(h_pool_flat,w_fc) +b_fc)
W_fc = w_fc = tf.Variable(tf.ones([1024,10]))
B_fc = tf.Variable(tf.ones([10]))
Y_model = tf.nn.softmax(tf.matmul(h_fc,W_fc) +B_fc)
y_data = tf.placeholder("float32",[None,10])
loss = -tf.reduce_sum(y_data * tf.log(Y_model))
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(loss)
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
for i in range(1000):
  batch_xs,batch_ys =mnist_data.train.next_batch(5)
  sess.run(train_step,feed_dict={x_data:batch_xs,y_data:batch_ys})
  if i%50==0:
    correct_prediction = tf.equal(tf.argmax(Y_model,1),tf.argmax(y_data,1))
    accuracy = tf.reduce_mean(tf.cast(correct_prediction,"float"))
    print(sess.run(accuracy,feed_dict={x_data:mnist_data.test.images,y_data:mnist_data.test.labels}))

更多关于Python相关内容可查看本站专题:《Python数学运算技巧总结》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python写日志封装类实例
Jun 28 Python
Python实现Linux命令xxd -i功能
Mar 06 Python
Python中import导入上一级目录模块及循环import问题的解决
Jun 04 Python
运动检测ViBe算法python实现代码
Jan 09 Python
使用Python搭建虚拟环境的配置方法
Feb 28 Python
详解python实现识别手写MNIST数字集的程序
Aug 03 Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
python实现桌面壁纸切换功能
Jan 21 Python
Python中super函数用法实例分析
Mar 18 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
May 20 Python
Python+腾讯云服务器实现每日自动健康打卡
Dec 06 Python
Python: 传递列表副本方式
Dec 19 #Python
python内置模块collections知识点总结
Dec 19 #Python
Python操作redis和mongoDB的方法
Dec 19 #Python
Python 实现Serial 与STM32J进行串口通讯
Dec 18 #Python
实现Python与STM32通信方式
Dec 18 #Python
利用pandas将非数值数据转换成数值的方式
Dec 18 #Python
python 浅谈serial与stm32通信的编码问题
Dec 18 #Python
You might like
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
C#使用PHP服务端的Web Service通信实例
2014/04/08 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
AngularJS 过滤器(自带和自建)详解
2016/09/19 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
详解如何在Vue项目中导出Excel
2019/04/19 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
[48:46]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第二场 11.19
2020/11/19 DOTA
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
Python类的专用方法实例分析
2015/01/09 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
Pandas之排序函数sort_values()的实现
2019/07/09 Python
Python中sys模块功能与用法实例详解
2020/02/26 Python
基于OpenCV的路面质量检测的实现
2020/11/04 Python
python中封包建立过程实例
2021/02/18 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
Prototype如何为一个Ajax添加一个参数
2015/12/06 面试题
毕业自我鉴定怎么写
2014/03/25 职场文书
给校长的一封检讨书
2014/09/20 职场文书
2014年小学美术工作总结
2014/12/20 职场文书
酒店辞职书怎么写
2015/02/26 职场文书
暂停营业通知
2015/04/25 职场文书
转变工作作风心得体会
2016/01/23 职场文书
python实现socket简单通信的示例代码
2021/04/13 Python
javascript数组includes、reduce的基本使用
2021/07/02 Javascript