使用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 translator使用实例
Sep 06 Python
python开发简易版在线音乐播放器
Mar 03 Python
Python内存管理方式和垃圾回收算法解析
Nov 11 Python
python dataframe 输出结果整行显示的方法
Jun 14 Python
python爬取微信公众号文章
Aug 31 Python
python判断完全平方数的方法
Nov 13 Python
Python设计模式之代理模式实例详解
Jan 19 Python
python 切换root 执行命令的方法
Jan 19 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
Feb 07 Python
详解python之heapq模块及排序操作
Apr 04 Python
pycharm sciview的图片另存为操作
Jun 01 Python
python中 .npy文件的读写操作实例
Apr 14 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实现算式验证码和汉字验证码实例
2015/03/09 PHP
php blowfish加密解密算法
2016/07/02 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
PHP实现支付宝即时到账功能
2016/12/21 PHP
使用Math.floor与Math.random取随机整数的方法详解
2013/05/07 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
js判断是否是手机页面
2017/03/17 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
JavaScript事件委托原理与用法实例分析
2018/06/07 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
vue3.0 加载json的方法(非ajax)
2020/10/26 Javascript
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
Python进程间通信Queue实例解析
2018/01/25 Python
Python KMeans聚类问题分析
2018/02/23 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
2018/12/07 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
Python hexstring-list-str之间的转换方法
2019/06/12 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
Python基于pandas绘制散点图矩阵代码实例
2020/06/04 Python
HTML5 b和i标记将被赋予真正的语义
2009/07/16 HTML / CSS
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
大学军训感言
2014/01/10 职场文书
语文课外活动总结
2014/08/27 职场文书
房屋授权委托书范本
2014/10/07 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
2014年政教处工作总结
2014/12/20 职场文书
小学重阳节活动总结
2015/03/24 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python
我去timi了,一起去timi是什么意思?
2022/04/13 杂记
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python