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的框架中一些会话程序的管理
Apr 20 Python
介绍Python中的fabs()方法的使用
May 14 Python
Python扫描IP段查看指定端口是否开放的方法
Jun 09 Python
Python读取Json字典写入Excel表格的方法
Jan 03 Python
python统计字母、空格、数字等字符个数的实例
Jun 29 Python
python使用xlrd和xlwt读写Excel文件的实例代码
Sep 05 Python
Python读取系统文件夹内所有文件并统计数量的方法
Oct 23 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
May 10 Python
Pytorch在NLP中的简单应用详解
Jan 08 Python
Python中使用socks5设置全局代理的方法示例
Apr 15 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
Nov 05 Python
python 统计代码耗时的几种方法分享
Apr 02 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
如何分别全角和半角以避免乱码
2006/10/09 PHP
检查php文件中是否含有bom的函数
2012/05/31 PHP
深入分析php中接口与抽象类的区别
2013/06/08 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
CodeIgniter配置之database.php用法实例分析
2016/01/20 PHP
微信红包随机生成算法php版
2016/07/21 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
一些Javascript的IE和Firefox(火狐)兼容性的问题总结及常用例子
2009/05/21 Javascript
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
2013/11/12 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
JS调用Android、Ios原生控件
2017/01/06 Javascript
JS中的事件委托实例浅析
2018/03/22 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
2018/10/29 Javascript
从0到1构建vueSSR项目之路由的构建
2019/03/07 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
vue+swiper实现左右滑动的测试题功能
2020/10/30 Javascript
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
Python爬取三国演义的实现方法
2016/09/12 Python
python使用pymysql实现操作mysql
2016/09/13 Python
python导入时小括号大作用
2017/01/10 Python
对Python中内置异常层次结构详解
2018/10/18 Python
早读迟到检讨书
2014/01/24 职场文书
幼儿园招生广告
2014/03/19 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
时尚女魔头观后感
2015/06/04 职场文书
小组组名及励志口号
2015/12/24 职场文书
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android