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 相关文章推荐
python登录QQ邮箱发信的实现代码
Feb 10 Python
python实现获取序列中最小的几个元素
Sep 25 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
Dec 24 Python
Python生成随机数组的方法小结
Apr 15 Python
详解python基础之while循环及if判断
Aug 24 Python
Python numpy实现数组合并实例(vstack,hstack)
Jan 09 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
Jan 23 Python
python使用mitmproxy抓取浏览器请求的方法
Jul 02 Python
基于python traceback实现异常的获取与处理
Dec 13 Python
python实现的分析并统计nginx日志数据功能示例
Dec 21 Python
在django admin详情表单显示中添加自定义控件的实现
Mar 11 Python
Django启动时找不到mysqlclient问题解决方案
Nov 11 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+Ajax实现表单验证的详解
2013/06/25 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
php数组使用规则分析
2015/02/27 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
使图片旋转的3种解决方案
2013/11/21 Javascript
jQuery获取checkboxlist的value值的方法
2015/09/27 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
2016/03/10 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
jQuery实现复制到粘贴板功能
2017/02/11 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
javascript基于定时器实现进度条功能实例
2017/10/13 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
vue axios 简单封装以及思考
2018/10/09 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
2018/12/11 jQuery
jQuery实现动态添加和删除input框实例代码
2019/03/26 jQuery
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
2019/12/22 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
Python根据区号生成手机号码的方法
2015/07/08 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
2018/03/22 Python
python Web开发你要理解的WSGI & uwsgi详解
2018/08/01 Python
django如何连接已存在数据的数据库
2018/08/14 Python
对python 生成拼接xml报文的示例详解
2018/12/28 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
2019/12/04 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
2020/05/15 Python
劳力士官方珠宝商:J.R. Dunn Jewelers
2018/09/29 全球购物
英文简历中的自荐信范文
2013/12/14 职场文书
2014小学数学教研组工作总结
2014/12/06 职场文书
MySQL分库分表详情
2021/09/25 MySQL
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技