TFboy养成记 MNIST Classification (主要是如何计算accuracy)
参考:莫烦。
主要是运用的MLP。另外这里用到的是批训练:
这个代码很简单,跟上次的基本没有什么区别。
这里的lossfunction用到的是是交叉熵cross_entropy.可能网上很多形式跟这里的并不一样。
这里一段时间会另开一个栏。专门去写一些机器学习上的一些理论知识。
这里代码主要写一下如何计算accuracy:
def getAccuracy(v_xs,v_ys):
global y_pre
y_v = sess.run(y_pre,feed_dict={x:v_xs})
correct_prediction = tf.equal(tf.arg_max(y_v,1),tf.arg_max(v_ys,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
result = sess.run(accuracy,feed_dict={x:v_xs,y:v_ys}) return result
首先得到ground truth,与预测值,然后对着预测值得到tf,arg_max---->你得到的是以float tensor,tensor上的各个值是各个分类结果的可能性,而argmax函数就是求里面的最大值的下表也就是结果。
注意这里每次得到的是一个batch的结果,也就是说以一个【9,1,2,、。。。。】的这种tensor,所以最后用tf.equal得到一个表示分类值与实际类标是否相同的Bool型tensor。最后把tensor映射到0,1,两个值上就可以了.
可能会有人问为什么不用int表示而是用float32来表示呢?因为下面腰酸的是准确率,如果是int32,那么按tensorflow的整数除法运算是直接取整数部分不算小数点的。(这几个涉及到的函数在之前的博客)
全部代码:
# -*- coding: utf-8 -*-
"""
Created on Sun Jun 18 15:31:11 2017 @author: Jarvis
""" import tensorflow as tf
import numpy as np
from tensorflow.examples.tutorials.mnist import input_data def addlayer(inputs,insize,outsize,activate_func = None):
W = tf.Variable(tf.random_normal([insize,outsize]),tf.float32)
b = tf.Variable(tf.zeros([1,outsize]),tf.float32)
W_plus_b = tf.matmul(inputs,W)+b if activate_func == None:
return W_plus_b
else:
return activate_func(W_plus_b)
def getAccuracy(v_xs,v_ys):
global y_pre
y_v = sess.run(y_pre,feed_dict={x:v_xs})
correct_prediction = tf.equal(tf.arg_max(y_v,1),tf.arg_max(v_ys,1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
result = sess.run(accuracy,feed_dict={x:v_xs,y:v_ys}) return result
mnist = input_data.read_data_sets('MNIST_data', one_hot=True) x = tf.placeholder(tf.float32,[None,784])
y = tf.placeholder(tf.float32,[None,10])
#h1 = addlayer(x,784,14*14,activate_func=tf.nn.softmax)
#y_pre = addlayer(h1,14*14,10,activate_func=tf.nn.softmax)
y_pre = addlayer(x,784,10,activate_func=tf.nn.softmax) cross_entropy = tf.reduce_mean(-tf.reduce_sum(y*tf.log(y_pre),reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) sess = tf.Session()
sess.run(tf.global_variables_initializer())
for i in range(10001):
x_batch,y_batch = mnist.train.next_batch(100)
sess.run(train_step,feed_dict={x:x_batch,y:y_batch}) if i % 100 == 0:
print (getAccuracy(mnist.test.images,mnist.test.labels))
TFboy养成记 MNIST Classification (主要是如何计算accuracy)的更多相关文章
- TFboy养成记 CNN
1/先解释下CNN的过程: 首先对一张图片进行卷积,可以有多个卷积核,卷积过后,对每一卷积核对应一个chanel,也就是一张新的图片,图片尺寸可能会变小也可能会不变,然后对这个chanel进行一些po ...
- TFBOY 养成记 一些比较好多文章。
API解释中文版(简书文章,没事看看): http://www.jianshu.com/p/e3a79eac554f Tensorlfow op辨异:tf.add()与tf.nn.bias_add() ...
- TFboy养成记 tf.cast,tf.argmax,tf.reduce_sum
referrence: 莫烦视频 先介绍几个函数 1.tf.cast() 英文解释: 也就是说cast的直译,类似于映射,映射到一个你制定的类型. 2.tf.argmax 原型: 含义:返回最大值所在 ...
- TFboy养成记 tensorboard
首先介绍几个用法: with tf.name_scope(name = "inputs"): 这个是用于区分区域的.如,train,inputs等. xs = tf.placeho ...
- TFboy养成记 多层感知器 MLP
内容总结与莫烦的视频. 这里多层感知器代码写的是一个简单的三层神经网络,输入层,隐藏层,输出层.代码的目的是你和一个二次曲线.同时,为了保证数据的自然,添加了mean为0,steddv为0.05的噪声 ...
- TFboy养成记 tensor shape到底怎么说
tensor.shape 对于一位向量,其形式为[x,] 对于矩阵,二维矩阵[x,y],三维矩阵[x,y,z] 对于标量,也就是0.3*x这种0.3,表示形式为() 如果说这个矩阵是三维的,你想获得其 ...
- TFboy养成记 简单小程序(Variable & placeholder)
学习参考周莫烦的视频. Variable:主要是用于训练变量之类的.比如我们经常使用的网络权重,偏置. 值得注意的是Variable在声明是必须赋予初始值.在训练过程中该值很可能会进行不断的加减操作变 ...
- TFboy养成记
转自:http://www.cnblogs.com/likethanlove/p/6547405.html 在tensorflow的使用中,经常会使用tf.reduce_mean,tf.reduce_ ...
- 2016级算法第六次上机-F.AlvinZH的学霸养成记VI
1082 AlvinZH的学霸养成记VI 思路 难题,凸包. 分析问题,平面上给出两类点,问能否用一条直线将二者分离. 首先应该联想到这是一个凸包问题,分别计算两类点的凸包,如果存在符合题意的直线,那 ...
随机推荐
- Babylon.GUI官方文档翻译
Babylon.GUI是一个基于Babylon.js的WebGL库,可以用来在WebGL3D场景中生成交互性UI与动态纹理.相比于html ui,Babylon.GUI的功能较为简化,但使用起来也更加 ...
- windows server git
我有一个阿里云,windows server,我想把代码放阿里云 我去做git,只需要安装copssh 下载git https://git-for-windows.github.io/ 下载Copss ...
- hover与click样式冲突
如果你的hover事件和click事件的样式不同,如元素背景本来是#fff,如果hover时背景是#ddd,点击时背景是#aaa,那么问题是当你点击后,鼠标再移动到这个元素时背景会变成#ddd,而你希 ...
- Java这些冷知识你知道吗?
1)jvm有很多种,其实jvm是一个标准,sun做的那个叫hotspot,作者就是后来v8的作者lars bak,其他公司也做过jvm,其中做得比较好的有bea的jrockit,其他的包括ibm的r9 ...
- Java并发之CountDownLatch、CyclicBarrier和Semaphore
CountDownLatch 是能使一组线程等另一组线程都跑完了再继续跑:CyclicBarrier 能够使一组线程在一个时间点上达到同步,可以是一起开始执行全部任务或者一部分任务. CountDow ...
- 微信小程序点击返回顶层实现方法
最近在研究微信小程序,被这个返回顶层给坑了一波,下面贴代码 wxml代码: <scroll-view scroll-y style="height: 1000rpx;" sc ...
- Linux.杀毒.Centos安装杀毒软件Clam
Linux系统用了几年, 甚少中毒 但前不久在阿里云的服务器被种马,折腾了几周才解决干净 感觉还是装个杀毒/马软件定期扫一扫比较稳妥, 这个Clam是免费的, 安装和配置办法记录如下: 已验证适用环境 ...
- 在for、foreach循环体中添加数组元素
在开发工作中遇到这样一种情形,需要在循环体中动态向遍历中的数组添加元素并在当前循环遍历中使用数组的全部元素. 首先使用foreach循环来遍历数组,将代码简化抽象如下: $arr = array(1, ...
- Linux系列教程(七)——Linux帮助和用户管理命令
上篇博客我们介绍了Linux文件搜索命令,其中find是用的最多的也是功能最强大的文件或目录搜索命令,和另一个搜索命令locate的区别是,find命令是全盘搜索,刚创建的文件也能搜索的到,而loca ...
- 上传图文{"errcode":40007,"errmsg":"invalid media_id"}解决方案
{"errcode":40007,"errmsg":"invalid media_id"}解决方案 网上关于这个问题的解决一般是把thumb ...