本章已机器学习领域的Hello World任务----MNIST手写识别做为TensorFlow的开始。MNIST是一个非常简单的机器视觉数据集,是由几万张28像素*28像素的手写数字组成,这些图片只包含灰度值信息。

下面提取了784维的特征,也就是2828个点展开成一维的结果,所以训练数据是一个55000784的Tensor,label是一个55000*10的tensor。当我们处理多分类任务时,通常需要使用Softmax Regression模型。它的工作原理很简单,将可以判定为某类的特征相加,然后将这些特征转化为判定是这一类的概率。其本质就是多类别逻辑回归。

import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("MNIST_data",one_hot=True)#从TensorFlow读取数据 print (mnist.train.images.shape,mnist.train.labels.shape)
print (mnist.test.images.shape,mnist.test.labels.shape)
print (mnist.validation.images.shape,mnist.validation.labels.shape) import tensorflow as tf
sess = tf.InteractiveSession()#创建一个session,之后的运算都在这个session里,不同session的数据和运算是相互独立的
x = tf.placeholder(tf.float32,[None,784])#输入数据的地方,第一个参数是数据类型,第二个是tensor的shape W = tf.Variable(tf.zeros([784,10]))#Variable是存储模型参数的,不同于存储数据的tensor一旦使用掉就消失,Variable在模型训练迭代过程中是持久化的。
b = tf.Variable(tf.zeros([10])) y = tf.nn.softmax(tf.matmul(x,W)+b)#实现Softmax Regression算法 y_ = tf.placeholder(tf.float32,[None,10])#定义一个真实的label,与下面的结果做比较
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_*tf.log(y),reduction_indices=[1]))#计算模型的loss train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)#定义了损失函数之后,再定义一个优化算法,本代码使用SGD算法
tf.global_variables_initializer().run()#使用全局参数初始化器初始化参数 for i in range(1000):
batch_xs,batch_ys = mnist.train.next_batch(100)#每次选择100条数据
train_step.run({x:batch_xs,y_:batch_ys})#选择好数据之后用SGD算法做迭代 correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(y_,1))#比较预测结果是否准确
accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))#转化成准确率
print (accuracy.eval({x:mnist.test.images,y_:mnist.test.labels}))#输出结果,正确率为91.57%

TensorFlow实现Softmax Regression识别手写数字的更多相关文章

  1. TensorFlow实现Softmax Regression识别手写数字中"TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败”问题

    出现问题: 在使用TensorFlow实现MNIST手写数字识别时,出现"TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应 ...

  2. TensorFlow实战之Softmax Regression识别手写数字

         关于本文说明,本人原博客地址位于http://blog.csdn.net/qq_37608890,本文来自笔者于2018年02月21日 23:10:04所撰写内容(http://blog.c ...

  3. 使用TensorFlow的卷积神经网络识别手写数字(2)-训练篇

    import numpy as np import tensorflow as tf import matplotlib import matplotlib.pyplot as plt import ...

  4. 【TensorFlow-windows】(一)实现Softmax Regression进行手写数字识别(mnist)

    博文主要内容有: 1.softmax regression的TensorFlow实现代码(教科书级的代码注释) 2.该实现中的函数总结 平台: 1.windows 10 64位 2.Anaconda3 ...

  5. 使用TensorFlow的卷积神经网络识别手写数字(3)-识别篇

    from PIL import Image import numpy as np import tensorflow as tf import time bShowAccuracy = True # ...

  6. 使用TensorFlow的卷积神经网络识别手写数字(1)-预处理篇

    功能: 将文件夹下的20*20像素黑白图片,根据重心位置绘制到28*28图片上,然后保存.经过预处理的图片有利于数字的准确识别.参见MNIST对图片的要求. 此处可下载已处理好的图片: https:/ ...

  7. 学习笔记TF024:TensorFlow实现Softmax Regression(回归)识别手写数字

    TensorFlow实现Softmax Regression(回归)识别手写数字.MNIST(Mixed National Institute of Standards and Technology ...

  8. 一文全解:利用谷歌深度学习框架Tensorflow识别手写数字图片(初学者篇)

    笔记整理者:王小草 笔记整理时间2017年2月24日 原文地址 http://blog.csdn.net/sinat_33761963/article/details/56837466?fps=1&a ...

  9. 3 TensorFlow入门之识别手写数字

    ------------------------------------ 写在开头:此文参照莫烦python教程(墙裂推荐!!!) ---------------------------------- ...

随机推荐

  1. windows使用pipenv创建虚拟环境报错UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 4: in...

    原因: 因为windows默认GBK编码,所以报错 解决方法: 最正确的解决方式不清楚,我的解决方式是修改源码,亲测有效: 将你报错位置的(报错位置在你的错误信息里) str(pe.szExeFile ...

  2. vector 移除元素

    vector中移除“与某值相等”的第一个元素. std::vector<Elem> coll; ... //remove first element with value val std: ...

  3. Python高级笔记(六)-- property属性【重要】

    1. property属性 目的:简化逻辑流程 class Goods(object): @property def size(self): return 100 obj = Goods() ret ...

  4. QML注意color小写

    1.用的时候大小写一样的 如: color="#3D3D3D" 和 color="#3d3d3d"都是同一个颜色 2.判断的时候,QML默认是小写 如:if(c ...

  5. Qt编写气体安全管理系统22-报警联动

    一.前言 报警联动功能不是一个常规的功能,一般是给客户定制的功能,比如探测器采集到的数据报警了,不仅本地要播放报警声音,存储报警记录,发送报警短信和邮件,还需要触发警号面板灯进行报警,而警号面板指示灯 ...

  6. C语言中结构体的构造函数

    示例代码: #include <iostream> using namespace std; struct Node { int x, y, z; Node(int _x, int _y, ...

  7. easyui datagrid 让某行复选框置灰不能选

    easyui中datagrid 让某行复选框置灰不能进行选中操作,以下为主要部分的code. //加载完毕后获取所有的checkbox遍历 onLoadSuccess: function(data){ ...

  8. INTEL 7代CPU I5 7500 集显HD630 WIN7 64位

    HD630 在WIN7 下的硬件ID  (在设备管理器 - 显卡 - 属性 中查看): PCI\VEN_8086&DEV_5912&SUBSYS_D0001458&REV_04 ...

  9. Linux下Mongodb安装和启动配置 转载

    原文地址:https://www.cnblogs.com/Jimmy104/p/6181899.html 以下文章为转载,感谢网友,原文链接 http://blog.csdn.net/yuwenrul ...

  10. 网页授权access_token,基础支持access_token,jsapi_ticket

    微信开发中网页授权access_token与基础支持的access_token异同 问题1:网页授权access_token与分享的jssdk中的access_token一样吗? 答:不一样.网页授权 ...