tensorflow入门(三)
三种代价函数
1,二次代价函数
式子代表预测值与样本值的差得平方和
由于使用的是梯度下降法,我们对变量w,b分别求偏导:
这种函数对于处理线性的关系比较好,但是如果遇到s型函数(如下图所示),效率不高。
从图中我们看出:当我们想要趋近于1时,B点接近于1,变化趋势变小(很正确),A点与1距离较远,变化趋势较大(很正确),C点(假设在x = -3处)远离1,变化趋势很小(发生错误),因此,二次代价函数中单凭梯度的大小决定变化的快慢是不对的。
由此我们引出了第二个代价函数——交叉熵代价函数
2,交叉熵代价函数
右边是babababab的推导过程,最终得到表达式:
结论如上↑
3,对数释然代价函数
我们对上次的代码进行修改,修改了loss的函数
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data #载入数据集
mnist = input_data.read_data_sets("MNIST_data",one_hot=True) #每个批次的大小
batch_size = 100
#计算一共有多少个批次
n_batch = mnist.train.num_examples // batch_size #定义两个placeholder
x = tf.placeholder(tf.float32,[None,784]) #图片
y = tf.placeholder(tf.float32,[None,10]) #标签 #创建一个简单的神经网络
w = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))
prediction = tf.nn.softmax(tf.matmul(x,w)+b) #二次代价函数
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y,logits=prediction))
#梯度下降算法
train_step = tf.train.GradientDescentOptimizer(0.2).minimize(loss) #初始化变量
init = tf.global_variables_initializer() #结果存放在一个bool类型的列表中,argmax()返回一维张量中最大值所在的位置,equal函数判断两者是否相等
correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))
#求准确率,cast:将bool型转换为0,1然后求平均正好算到是准确率
accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32)) with tf.Session() as sess:
sess.run(init)
for epoch in range(21):
for batch in range(batch_size):#next_batch:不断获取下一组数据
batch_xs,batch_ys = mnist.train.next_batch(batch_size)
sess.run(train_step,feed_dict={x:batch_xs,y:batch_ys}) acc = sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels})
print("Iter "+str(epoch)+",Testing Accuracy "+str(acc))
得到结果:
Iter 0,Testing Accuracy 0.7051
Iter 1,Testing Accuracy 0.8002
Iter 2,Testing Accuracy 0.8105
Iter 3,Testing Accuracy 0.8183
Iter 4,Testing Accuracy 0.8218
Iter 5,Testing Accuracy 0.8268
Iter 6,Testing Accuracy 0.8585
Iter 7,Testing Accuracy 0.8724
Iter 8,Testing Accuracy 0.8866
Iter 9,Testing Accuracy 0.8899
Iter 10,Testing Accuracy 0.8936
Iter 11,Testing Accuracy 0.8968
Iter 12,Testing Accuracy 0.8979
Iter 13,Testing Accuracy 0.8985
Iter 14,Testing Accuracy 0.8994
Iter 15,Testing Accuracy 0.9007
Iter 16,Testing Accuracy 0.9015
Iter 17,Testing Accuracy 0.9024
Iter 18,Testing Accuracy 0.9047
Iter 19,Testing Accuracy 0.9041
Iter 20,Testing Accuracy 0.9057
哇,准确率提高很多诶!
——
tensorflow入门(三)的更多相关文章
- TensorFlow 入门之手写识别CNN 三
TensorFlow 入门之手写识别CNN 三 MNIST 卷积神经网络 Fly 多层卷积网络 多层卷积网络的基本理论 构建一个多层卷积网络 权值初始化 卷积和池化 第一层卷积 第二层卷积 密集层连接 ...
- (转)TensorFlow 入门
TensorFlow 入门 本文转自:http://www.jianshu.com/p/6766fbcd43b9 字数3303 阅读904 评论3 喜欢5 CS224d-Day 2: 在 Da ...
- #tensorflow入门(1)
tensorflow入门(1) 关于 TensorFlow TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库.节点(Nodes)在图中表示数学操 ...
- TensorFlow入门(五)多层 LSTM 通俗易懂版
欢迎转载,但请务必注明原文出处及作者信息. @author: huangyongye @creat_date: 2017-03-09 前言: 根据我本人学习 TensorFlow 实现 LSTM 的经 ...
- TensorFlow入门之MNIST最佳实践
在上一篇<TensorFlow入门之MNIST样例代码分析>中,我们讲解了如果来用一个三层全连接网络实现手写数字识别.但是在实际运用中我们需要更有效率,更加灵活的代码.在TensorFlo ...
- TensorFlow入门之MNIST最佳实践-深度学习
在上一篇<TensorFlow入门之MNIST样例代码分析>中,我们讲解了如果来用一个三层全连接网络实现手写数字识别.但是在实际运用中我们需要更有效率,更加灵活的代码.在TensorFlo ...
- TensorFlow 入门之手写识别(MNIST) 数据处理 一
TensorFlow 入门之手写识别(MNIST) 数据处理 一 MNIST Fly softmax回归 准备数据 解压 与 重构 手写识别入门 MNIST手写数据集 图片以及标签的数据格式处理 准备 ...
- 利用 TensorFlow 入门 Word2Vec
利用 TensorFlow 入门 Word2Vec 原创 2017-10-14 chen_h coderpai 博客地址:http://www.jianshu.com/p/4e16ae0aad25 或 ...
- TensorFlow 入门 | iBooker·ApacheCN
原文:Getting Started with TensorFlow 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活原 ...
- 【原创】NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战
前言 本文将演示一个iOS客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo.服务端将分别用MINA2和Netty4进行实现,而通信时服务端你只需选其一就行了.同 ...
随机推荐
- Xcode8免证书生产IPA打包文件
免证书生产IPA打包文件 修改Xcode配置文件: 关闭Xcode.然后打开“其他-终端”,就是命令行工具 cd /Applications/Xcode.app/Contents/Develope ...
- beego——session模块
session介绍 session是一个独立的模块,即你可以那这个模块应用于其它Go程序中. session模块是用来存储客户端用户,session目前只支持cookie方式的请求,如果客户端不支持c ...
- 运输层协议--TCP及UDP协议
TCP及UDP协议 按照网络的五层分级结构来看,TCP及UDP位于运输层,故TCP及UDP是运输层协议.TCP协议--传输控制协议UDP协议--用户数据报协议 多路复用及多路分解 图多路复用及多路分解 ...
- Mysql之正则匹配
Regex与Like的关系Mysql中我们经常会用到正则表达式就是Like filed like '%?%' .但是有时对于一些复杂场景下的正则过滤,单单一个like就显得有些力不从心了 Regex的 ...
- dev-server.js详解
转载自:https://www.cnblogs.com/ye-hcj/p/7091706.html dev-server.js详解 require('./check-versions')() var ...
- 利用JS代码快速获得知网论文作为参考文献的引用文本
写论文的时候,发现知网虽然提供了生成参考文献引用标注的功能,但是效率仍然不太高.我就忙里偷闲写了一段简单的脚本,能无延迟地生成这段引用文本.目前支持期刊论文和硕士论文. 代码: (function() ...
- [转] 把eclipse设置为黑色主题 方式二
首先,废话不多说,给大家看一下我设置成黑色主题后的效果: 至于怎么达到这个效果呢,首先是中间的编辑区. 从我的云盘里下载压缩包,解压到eclipse目录的dropins文件夹下,你就会有各种各样的编辑 ...
- Kafka学习之(三)Centos下给PHP开启Kafka扩展(rdkafka)
Centos版本:Centos6.4,PHP版本:PHP7. 在上一篇文章中使用IP为192.168.9.154的机器安装并开启了Kafka进行了简单测试,充当了Kafka服务器. 本篇文章新开启一台 ...
- c++ 使用WinHTTP实现文件下载功能
因为要项目中要想要实现一个软件自动更新的功能,之前是使用socket直接下载.但切换下载源的时候很麻烦.所以换用http方式. 网上找了很多资料,基本上就是下面几种: 1.curllib //功能强大 ...
- localAddress
$(function(){ <% out.println("/** ip:"+request.getLocalAddr()+"("+request.get ...