关闭

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

标签: TensorFlow深度学习
326人阅读 评论(0) 收藏 举报
分类:

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

平台:
1.windows 10 64位
2.Anaconda3-4.2.0-Windows-x86_64.exe (当时TF还不支持python3.6,又懒得在高版本的anaconda下配置多个python环境,于是装了一个3-4.2.0(默认装python3.5),建议装anaconda3的最新版本,TF1.2.0版本已经支持python3.6!)
3.TensorFlow1.1.0

先贴代码,函数

# -*- coding: utf-8 -*-
"""
Created on Mon Jun 12 16:36:43 2017

@author: ASUS
"""
#import itchat
#from PIL import Image
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) # 训练集形状, 标签形状

sess = tf.InteractiveSession() # sess被注册为默认的session 
x = tf.placeholder(tf.float32, [None, 784]) # Placeholder是输入数据的地方

#-------------给weights和bias创建Variable对象-------------
# Variable是用来存储模型参数,与存储数据的tensor不同,tensor一旦使用掉就消失
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
# 计算 softmax 输出 y 其中x形状是[None, 784],None是为batch数而准备的
y = tf.nn.softmax(tf.matmul(x, W) + b)


#-------------交叉熵损失函数-------------
# y_存放真实标签
y_ = tf.placeholder(tf.float32, [None, 10])
# recude_mean和reduce_sum意思缩减维度的均值,以及缩减维度的求和
# reduce_mean在这里是对一个batch进行求均值
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices = [1])) 

#-------------优化算法设置-------------
# 采用梯度下降的优化方法,
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

#---------------全局参数初始化-------------------
tf.global_variables_initializer().run()

#---------------迭代地执行训练操作-------------------
for i in range(1000):
    batch_xs, batch_ys = mnist.train.next_batch(100)
    train_step.run({x: batch_xs, y_: batch_ys})

#---------------准确率验证-------------------
# tf.argmax是寻找tensor中值最大的元素的序号 ,在此用来判断类别
# tf.equal是判断两个变量是否相等, 返回的是bool值
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_, 1))
# tf.cast用于数据类型转换
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(accuracy)
print(accuracy.eval({x:mnist.test.images, y_: mnist.test.labels}))

其中用到的函数总结:
1. sess = tf.InteractiveSession() 将sess注册为默认的session
2. tf.placeholder() , Placeholder是输入数据的地方,也称为占位符,通俗的理解就是给输入数据(此例中的图片x)和真实标签(y_)提供一个入口,或者是存放地。(个人理解,可能不太正确,后期对TF有深入认识的话再回来改~~)
3. tf.Variable() Variable是用来存储模型参数,与存储数据的tensor不同,tensor一旦使用掉就消失
4. tf.matmul() 矩阵相乘函数
5. tf.reduce_mean 和tf.reduce_sum 是缩减维度的计算均值,以及缩减维度的求和
6. tf.argmax() 是寻找tensor中值最大的元素的序号 ,此例中用来判断类别
7. tf.cast() 用于数据类型转换
(ps: 可将每篇博文最后的函数总结复制到一个word文档,便于日后查找)

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

TensorFlow学习笔记(二)——实例Softmax Regression识别手写数字

在下学习TensorFlow的主要参考资料是电子工业出版社的[《TensorFlow实战》](https://book.douban.com/subject/26974266/),实例也基本都来自这本...
  • u011159042
  • u011159042
  • 2017-03-31 10:55
  • 1635

R︱Softmax Regression建模 (MNIST 手写体识别和文档多分类应用)

本文转载自经管之家论坛, R语言中的Softmax Regression建模 (MNIST 手写体识别和文档多分类应用) R中的softmaxreg包,发自2016-09-09,链接:https:/...
  • sinat_26917383
  • sinat_26917383
  • 2016-10-12 10:35
  • 2585

基于tensorflow的MNIST手写数字识别(二)--入门篇

一、本文的意义 因为谷歌官方其实已经写了MNIST入门和深入两篇教程了,那我写这些文章又是为什么呢,只是抄袭?那倒并不是,更准确的说应该是笔记吧,然后用更通俗的语言来解释,并且补充更多,官方文章中没有...
  • wlmnzf
  • wlmnzf
  • 2016-04-07 15:21
  • 13803

tensorflow 第一个程序MNIST手写数字识别(Softmax Regression实现)

完成了tensorflow的第一次实战 代码如下:(黑字为注释,红字为代码行) # -*- coding: utf-8 -*- """ Spyder Editor This ...
  • pcjackson
  • pcjackson
  • 2017-06-26 22:07
  • 160

Tensorflow的Helloword:使用简单Softmax Regression模型来识别Mnist手写数字

首先准备数据:import tensorflow.examples.tutorials.mnist.input_data mnist = input_data.read_data_sets("MNIS...
  • zjwcdd
  • zjwcdd
  • 2016-09-02 20:35
  • 745

用TensorFlow的Softmax Regression进行手写数字识别

对于人类来说,识别手写的数字是一件非常容易的事情。我们甚至不用思考,就可以看出下面的数字分别是5,0,4,1。 但是想让机器识别这些数字,则要困难得多。 如果让你用传统的编程语言(如Java)...
  • clcwcxfwf
  • clcwcxfwf
  • 2017-06-03 20:17
  • 250

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

TensorFlow实现Softmax Regression(回归)识别手写数字。MNIST(Mixed National Institute of Standards and Technology ...
  • weixin_38776853
  • weixin_38776853
  • 2017-07-08 12:40
  • 386

TensorFlow实现Softmax Regression手写数字识别

MNIST数据集 one-hot编码 Softmax Regression算法 使用TensorFlow实现Softmax算法 主要步骤 完整的代码实现 总结 这篇文章是学习《Tenso...
  • csdnldp
  • csdnldp
  • 2017-06-15 17:12
  • 140

TensorFlow(二)实现Softmax Regression 识别手写数字

1、数据MNIST 2、任务对手写数字的图片进行分类,转成 0~9 一共 10 类3、Softmax Regression 工作原理可以判定为某类的特征相加,然后将这些特征转化为判定是这一类的概率4...
  • qq_21046135
  • qq_21046135
  • 2017-07-29 20:58
  • 230

TensorFlow实现Softmax Regression识别手写数字

代码(源代码都有详细的注释)和数据集可以在github下载: https://github.com/crazyyanchao/TensorFlow-HelloWorld 这个版本准确率在0.917...
  • superman_xxx
  • superman_xxx
  • 2017-03-17 13:43
  • 509
    个人资料
    • 访问:43136次
    • 积分:1196
    • 等级:
    • 排名:千里之外
    • 原创:69篇
    • 转载:5篇
    • 译文:0篇
    • 评论:60条