首页 技术 正文
技术 2022年11月17日
0 收藏 876 点赞 3,009 浏览 2142 个字

参考:莫烦。

主要是运用的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))
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,090
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,567
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,415
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,187
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,824
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,907