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中如何获取类属性的列表
Dec 26 Python
Python基础语言学习笔记总结(精华)
Nov 14 Python
Python实现霍夫圆和椭圆变换代码详解
Jan 12 Python
Python3 replace()函数使用方法
Mar 19 Python
Python3.5 处理文本txt,删除不需要的行方法
Dec 10 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
Python搭建代理IP池实现存储IP的方法
Oct 27 Python
python 比较字典value的最大值的几种方法
Apr 17 Python
pyinstaller将含有多个py文件的python程序做成exe
Apr 29 Python
python中Ansible模块的Playbook的具体使用
May 28 Python
一些关于python 装饰器的个人理解
Aug 31 Python
Python 3.9的到来到底是意味着什么
Oct 14 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程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
2013/06/08 Javascript
js实现的常用的左侧导航效果
2013/10/17 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
JS小游戏之宇宙战机源码详解
2014/09/25 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
jQuery移动web开发中的页面初始化与加载事件
2015/12/03 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
详解基于Vue,Nginx的前后端不分离部署教程
2018/12/04 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
基于javascript处理二进制图片流过程详解
2020/06/08 Javascript
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
python中datetime模块中strftime/strptime函数的使用
2018/07/03 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
tensorflow没有output结点,存储成pb文件的例子
2020/01/04 Python
如何在django中添加日志功能
2020/02/06 Python
python操作toml文件的示例代码
2020/11/27 Python
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
男方父母证婚词
2014/01/12 职场文书
机电一体化专业毕业生自荐信
2014/06/19 职场文书
加强作风建设心得体会
2014/10/22 职场文书
学生上课说话检讨书
2014/10/25 职场文书
工程部经理岗位职责
2015/02/02 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
PHP获取学生成绩的方法
2021/11/17 PHP
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫