tensorflow学习笔记之简单的神经网络训练和测试


Posted in Python onApril 15, 2018

本文实例为大家分享了用简单的神经网络来训练和测试的具体代码,供大家参考,具体内容如下

刚开始学习tf时,我们从简单的地方开始。卷积神经网络(CNN)是由简单的神经网络(NN)发展而来的,因此,我们的第一个例子,就从神经网络开始。

神经网络没有卷积功能,只有简单的三层:输入层,隐藏层和输出层。

数据从输入层输入,在隐藏层进行加权变换,最后在输出层进行输出。输出的时候,我们可以使用softmax回归,输出属于每个类别的概率值。借用极客学院的图表示如下:

tensorflow学习笔记之简单的神经网络训练和测试

其中,x1,x2,x3为输入数据,经过运算后,得到三个数据属于某个类别的概率值y1,y2,y3. 用简单的公式表示如下:

tensorflow学习笔记之简单的神经网络训练和测试

在训练过程中,我们将真实的结果和预测的结果相比(交叉熵比较法),会得到一个残差。公式如下:

tensorflow学习笔记之简单的神经网络训练和测试

y是我们预测的概率值,y'是实际的值。这个残差越小越好,我们可以使用梯度下降法,不停地改变W和b的值,使得残差逐渐变小,最后收敛到最小值。这样训练就完成了,我们就得到了一个模型(W和b的最优化值)。

完整代码如下:

import tensorflow as tf
import tensorflow.examples.tutorials.mnist.input_data as input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
x = tf.placeholder(tf.float32, [None, 784])
y_actual = tf.placeholder(tf.float32, shape=[None, 10])
W = tf.Variable(tf.zeros([784,10]))    #初始化权值W
b = tf.Variable(tf.zeros([10]))      #初始化偏置项b
y_predict = tf.nn.softmax(tf.matmul(x,W) + b)   #加权变换并进行softmax回归,得到预测概率
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_actual*tf.log(y_predict),reduction_indies=1))  #求交叉熵
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)  #用梯度下降法使得残差最小

correct_prediction = tf.equal(tf.argmax(y_predict,1), tf.argmax(y_actual,1))  #在测试阶段,测试准确度计算
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))        #多个批次的准确度均值

init = tf.initialize_all_variables()
with tf.Session() as sess:
  sess.run(init)
  for i in range(1000):        #训练阶段,迭代1000次
    batch_xs, batch_ys = mnist.train.next_batch(100)      #按批次训练,每批100行数据
    sess.run(train_step, feed_dict={x: batch_xs, y_actual: batch_ys})  #执行训练
    if(i%100==0):         #每训练100次,测试一次
      print "accuracy:",sess.run(accuracy, feed_dict={x: mnist.test.images, y_actual: mnist.test.labels})

每训练100次,测试一次,随着训练次数的增加,测试精度也在增加。训练结束后,1W行数据测试的平均精度为91%左右,不是太高,肯定没有CNN高。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
Mar 13 Python
Python写入CSV文件的方法
Jul 08 Python
Django返回json数据用法示例
Sep 18 Python
利用Python暴力破解zip文件口令的方法详解
Dec 21 Python
python生成tensorflow输入输出的图像格式的方法
Feb 12 Python
Pandas读取并修改excel的示例代码
Feb 17 Python
numpy.where() 用法详解
May 27 Python
如何在python中写hive脚本
Nov 08 Python
python numpy数组中的复制知识解析
Feb 03 Python
利用Python实现自动扫雷小脚本
Dec 17 Python
PyTorch 如何自动计算梯度
May 23 Python
Pytorch入门之mnist分类实例
Apr 14 #Python
pytorch构建网络模型的4种方法
Apr 13 #Python
Python输入二维数组方法
Apr 13 #Python
Python基于递归实现电话号码映射功能示例
Apr 13 #Python
Python的多维空数组赋值方法
Apr 13 #Python
python多维数组切片方法
Apr 13 #Python
Python实现判断并移除列表指定位置元素的方法
Apr 13 #Python
You might like
PHP高手需要要掌握的知识点
2014/08/21 PHP
php利用scws实现mysql全文搜索功能的方法
2014/12/25 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
jQuery滚动加载图片效果的实现
2013/03/06 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
让新消息在网页标题闪烁提示的jQuery代码
2013/11/04 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
Angular.js基础学习之初始化
2017/03/10 Javascript
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
解析Python中的异常处理
2015/04/28 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
Python之用户输入的实例
2018/06/22 Python
python变量赋值方法(可变与不可变)
2019/01/12 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
Python爬取YY评级分数并保存数据实现过程解析
2020/06/01 Python
Python利用命名空间解析XML文档
2020/08/10 Python
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
浅谈Html5多线程开发之WebWorkers
2018/05/02 HTML / CSS
保密承诺书范文
2014/03/27 职场文书
付款证明模板
2015/06/19 职场文书
婚礼家长致辞
2015/07/27 职场文书
Django实现drf搜索过滤和排序过滤
2021/06/21 Python
python中的class_static的@classmethod的巧妙用法
2021/06/22 Python
分享几个实用的CSS代码块
2022/06/10 HTML / CSS
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技