本章已机器学习领域的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%

最新文章

  1. 【原创】小白学jquery Mobile《构建跨平台APP:jQuery Mobile移动应用实战》连载五(给按钮加图标)
  2. flex 监听网络连接情况
  3. .net自动生成版本号
  4. CICS定时
  5. 武汉科技大学ACM:1005: Soapbear and Honey
  6. 【Java GUI】Java GUI基金会
  7. ubuntu setup adb tool
  8. JavaSe: String的编译期优化
  9. 在linux内核中修改TCP MSS值
  10. 【JavaScript】常用的数据类型的处理方式
  11. #Java学习之路——基础阶段(第一篇)
  12. phpstorm----------phpstorm2017基本使用
  13. Apache hadoop安装配置
  14. java多线程面试题整理及答案(2018年)
  15. protobuf标准消息方法
  16. 简单实用的extend对象合并
  17. colinux安装指南
  18. Linux学习笔记:ps -ef、ps aux、kill -9
  19. CCF CSP 201412-4 最优灌溉
  20. 15、高可用 PXC(percona xtradb cluster) 搭建

热门文章

  1. Vue绑定属性 绑定Class 绑定style
  2. ionic4 路由跳转、ionic4 路由跳转传值 NavController 返回上一页 、NavController 回到根
  3. Laya的屏幕适配,UI组件适配
  4. Swift4.0复习Optional
  5. 微信小程序技巧记录
  6. LODOP中带caption的表格被关联并次页偏移测试
  7. WEUI switch 如何取值?
  8. Selenium2+python自动化2.7-火狐44版本环境搭建(转)
  9. Centos7网络连接
  10. 最新 迅游科技java校招面经 (含整理过的面试题大全)