使用TensorFlow搭建一个全连接神经网络教程


Posted in Python onFebruary 06, 2020

说明

本例子利用TensorFlow搭建一个全连接神经网络,实现对MNIST手写数字的识别。

先上代码

from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf

# prepare data
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)

xs = tf.placeholder(tf.float32, [None, 784])
ys = tf.placeholder(tf.float32, [None, 10])

# the model of the fully-connected network
weights = tf.Variable(tf.random_normal([784, 10]))
biases = tf.Variable(tf.zeros([1, 10]) + 0.1)
outputs = tf.matmul(xs, weights) + biases
predictions = tf.nn.softmax(outputs)
cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(predictions),
            reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

# compute the accuracy
correct_predictions = tf.equal(tf.argmax(predictions, 1), tf.argmax(ys, 1))
accuracy = tf.reduce_mean(tf.cast(correct_predictions, tf.float32))

with tf.Session() as sess:
 init = tf.global_variables_initializer()
 sess.run(init)
 for i in range(1000):
  batch_xs, batch_ys = mnist.train.next_batch(100)
  sess.run(train_step, feed_dict={
   xs: batch_xs,
   ys: batch_ys
  })
  if i % 50 == 0:
   print(sess.run(accuracy, feed_dict={
    xs: mnist.test.images,
    ys: mnist.test.labels
   }))

代码解析

1. 读取MNIST数据

mnist = input_data.read_data_sets('MNIST_data', one_hot=True)

2. 建立占位符

xs = tf.placeholder(tf.float32, [None, 784])
ys = tf.placeholder(tf.float32, [None, 10])

xs 代表图片像素数据, 每张图片(28×28)被展开成(1×784), 有多少图片还未定, 所以shape为None×784.

ys 代表图片标签数据, 0-9十个数字被表示成One-hot形式, 即只有对应bit为1, 其余为0.

3. 建立模型

weights = tf.Variable(tf.random_normal([784, 10]))


biases = tf.Variable(tf.zeros([1, 10]) + 0.1)
outputs = tf.matmul(xs, weights) + biases
predictions = tf.nn.softmax(outputs)
cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(predictions),
            reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

使用Softmax函数作为激活函数:

使用TensorFlow搭建一个全连接神经网络教程

4. 计算正确率

correct_predictions = tf.equal(tf.argmax(predictions, 1), tf.argmax(ys, 1))
accuracy = tf.reduce_mean(tf.cast(correct_predictions, tf.float32))

5. 使用模型

with tf.Session() as sess:
 init = tf.global_variables_initializer()
 sess.run(init)
 for i in range(1000):
  batch_xs, batch_ys = mnist.train.next_batch(100)
  sess.run(train_step, feed_dict={
   xs: batch_xs,
   ys: batch_ys
  })
  if i % 50 == 0:
   print(sess.run(accuracy, feed_dict={
    xs: mnist.test.images,
    ys: mnist.test.labels
   }))

运行结果

训练1000个循环, 准确率在87%左右.

Extracting MNIST_data/train-images-idx3-ubyte.gz
Extracting MNIST_data/train-labels-idx1-ubyte.gz
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
0.1041
0.632
0.7357
0.7837
0.7971
0.8147
0.8283
0.8376
0.8423
0.8501
0.8501
0.8533
0.8567
0.8597
0.8552
0.8647
0.8654
0.8701
0.8712
0.8712

以上这篇使用TensorFlow搭建一个全连接神经网络教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中的闭包用法实例详解
May 05 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
Jun 30 Python
Python 探针的实现原理
Apr 23 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
python三引号输出方法
Feb 27 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
Jun 13 Python
python代理工具mitmproxy使用指南
Jul 04 Python
python常用库之NumPy和sklearn入门
Jul 11 Python
Python的互斥锁与信号量详解
Sep 12 Python
Python importlib动态导入模块实现代码
Apr 16 Python
python 下载文件的几种方法汇总
Jan 06 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
Apr 02 Python
详解python 降级到3.6终极解决方案
Feb 06 #Python
PyCharm如何导入python项目的方法
Feb 06 #Python
tensorflow 环境变量设置方式
Feb 06 #Python
快速查找Python安装路径方法
Feb 06 #Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
Feb 06 #Python
如何在django中添加日志功能
Feb 06 #Python
keras tensorflow 实现在python下多进程运行
Feb 06 #Python
You might like
php类
2006/11/27 PHP
PHP 木马攻击防御技巧
2009/06/13 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
Yii2实现UploadedFile上传文件示例
2017/02/15 PHP
PHP实现数组和对象的相互转换操作示例
2019/03/20 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
2014/06/27 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
2016/05/31 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
微信小程序网络请求的封装与填坑之路
2017/04/01 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
vue登录注册实例详解
2019/09/14 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
Python中有趣在__call__函数
2015/06/21 Python
python简单判断序列是否为空的方法
2015/06/30 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
python中数据库like模糊查询方式
2020/03/02 Python
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
杰夫·班克斯男士服装网上商店:Jeff Banks
2019/10/24 全球购物
2014年副班长工作总结
2014/12/10 职场文书
先进班组材料范文
2014/12/25 职场文书
客房服务员岗位职责
2015/02/09 职场文书
高中运动会广播稿
2015/08/19 职场文书
小学英语听课心得体会
2016/01/14 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书