TensorFlow实例(4)--MNIST简介及手写数字分类算法
来源:互联网 发布:战斗力探测器软件下载 编辑:程序博客网 时间:2024/05/15 07:50
MNIST 是Tensoflow提供的一个入门级的计算机视觉数据集,分为两部分(训练集和测试集)
x是一个长度为784的数组,每个元素都是0-1之间的数值,784等于28*28,相当于一个28*28的点阵图
y是一个长度为10的数组,每个元素是0或1,当y中第N个元素为1时,表示x这个点阵图所对应的就是N
如[0,0,1,0,0,0,0,0,0,0] 表示为 2
在Tensoflow提供的这个实例中,使用的是softmax 回归模型,归属于神经网络的一种算法,
其中训练集共55000张,测试集共10000张,当为None时随机读取
x是一个长度为784的数组,每个元素都是0-1之间的数值,784等于28*28,相当于一个28*28的点阵图
y是一个长度为10的数组,每个元素是0或1,当y中第N个元素为1时,表示x这个点阵图所对应的就是N
如[0,0,1,0,0,0,0,0,0,0] 表示为 2
在Tensoflow提供的这个实例中,使用的是softmax 回归模型,归属于神经网络的一种算法,
如果对具体的模型数理算法感兴趣可以上网找找,本文不做详细介绍
这个模型计算MNIST最终的正确率大约在91%左右,并不是十分理想,但贵在简单,代码也不多
做为TensorFlow的基础篇,目的并不是学习如果使用高深的模型,可是理解如何使用TensorFlow
关于神经网络的基本原理,可以参考 机器学习(1)--神经网络初探
如果你看到上面784=28*28还是晕晕的,可以先看看 TensorFlow的MNIST手写数字还原小程序
点击此处下载Mnist数据包
# -*- coding:utf-8 -*- import tensorflow as tf import tensorflow.examples.tutorials.mnist.input_data as input_dataimport random#读取mnist数据,下载后的Mnist并解压后,放在项目的同级目录下,通过下面程序即可读取mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)#x_data,y_data为传入量(如果对传入量不了解可参考我别的文章)在后面使用的意义是:#在训练时,None表示从训练集中取得一张图表(x_data),及图表的值(y_data)#在测试评估模型时,None表示整个测试集合x_data = tf.placeholder("float", [None, 784]) y_data = tf.placeholder("float", [None,10]) W = tf.Variable(tf.zeros([784,10])) #神经网络的Weight的预设值,b = tf.Variable(tf.zeros([10])) #biase偏差为一个有10个元素的'''下面一句用处就是利用 softmax模型,计算y值,在后面y值是来和实际值y_data进行比对用的softmax 回归模型 可以用来给不同的对象分配概率,如果对具体的模型数理算法感兴趣可以上网找找,这里不做介绍下面这句也就是神经网络的一个应用,通过图片x_data,自己算出一个y,不断修正Weight,这里只简单画画三个变量矩阵乘法 x_data,是一行784列的数据,W是784行10列的数据,利用矩阵乘法 [w0_1, w1_1, w2_1, w3_1, w4_1, w5_1, w6_1, w7_1, w8_1, w9_1 ]x_data=[x1,x2,x3...,x784] * ... [w0_784,w1_784,w2_784,w3_784,w4_784,w5_784,w6_784,w7_784,w8_784,w9_784]=[b1,b2,b3...,b10],经过 softmax 计算后,得到y,然后再与y_data比对,修正Weight,'''y = tf.nn.softmax(tf.matmul(x_data,W) + b) loss = -tf.reduce_sum(y_data*tf.log(y))#计算y值与y_的losstrain = tf.train.GradientDescentOptimizer(0.01).minimize(loss) #通过不断的神经网络训练修正Weightwith tf.Session() as sess: sess.run(tf.initialize_all_variables()) for i in range(1000): #取得一张图片并做为传入量,经过1000循环调正Weights tmpX, tmpY = mnist.train.next_batch(100) sess.run(train, feed_dict={x_data: tmpX, y_data: tmpY}) #以下三句用入是评估模型 #1、y_data一定是0和1组成的数字,这里比较实际与计算值是否相同 prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_data,1)) #2、prediction返回的是True或False,tf.cast(prediction, "float")将这个转为浮点型True为1,最后会得到[1,0,1,0,...] #tf.reduce_mean对所有的值求平均值 accuracy = tf.reduce_mean(tf.cast(prediction, "float")) #3、上述测试结果,即这整个[1,0,1,0,...] 数组长度即为测试集合的长度 print( sess.run(accuracy, feed_dict={x_data: mnist.test.images, y_data: mnist.test.labels})) #最后结果应该是在91%左右,
阅读全文
0 0
- TensorFlow实例(4)--MNIST简介及手写数字分类算法
- Tensorflow实例:mnist手写数字
- Tensorflow小样例-分类模型(识别mnist手写数字)
- tensorflow-mnist手写数字识别
- 基于tensorflow的MNIST手写数字识别
- 基于tensorflow的MNIST手写数字识别
- Tensorflow 实现 MNIST 手写数字识别
- 神经网络-tensorflow实现mnist手写数字识别
- tensorflow中mnist手写数字识别
- tensorflow中logistic识别mnist手写数字
- tensorflow中MLP识别mnist手写数字
- tensorflow构建RNN识别mnist手写数字
- TensorFlow学习---实现mnist手写数字识别
- TensorFlow实战—mnist手写数字识别
- tensorflow进行MNIST手写数字识别-CNN
- tensorflow进行MNIST手写数字识别-LSTM
- 训练Tensorflow识别手写数字 mnist
- TensorFlow笔记之一:MNIST手写数字识别
- Redis视频教程
- Nodejs-8.9.3 安装与使用
- 线性表的建立,删除,查找
- Python入门-变量与数据类型
- python---项目4-Zip文件口令破解脚本,zipfile,optparse,thread
- TensorFlow实例(4)--MNIST简介及手写数字分类算法
- Python入门-运算符
- 排序之——冒泡排序
- Python入门-流程控制
- Python学习笔记2017年12月22日
- break和continue的区别
- subprocess与win32process
- 哲♂学三幻神带你学习ConstraintLayout(约束布局)
- CentOS6.4中vsftpd服务器的安装与配置