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

原创 2017年06月20日 10:41:51

博文主要内容有:
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文档,便于日后查找)

版权声明:本文为TensorSense原创文章, 转载请注明出处~~

相关文章推荐

TensorFlow学习笔记(2)--构造线性回归模型

先制作一些数据:import numpy as np import tensorflow as tf import matplotlib.pyplot as plt# 随机生成1000个点,围绕在y=...
  • lwplwf
  • lwplwf
  • 2017年03月04日 17:34
  • 2103

TensorFlow学习笔记(3)--实现Softmax逻辑回归识别手写数字(MNIST数据集)

基于MNIST数据集的 逻辑回归模型做十分类任务 没有隐含层的Softmax Regression只能直接从图像的像素点推断是哪个数字,而没有特征抽象的过程。多层神经网络依靠隐含层,则可以组合出高阶...
  • lwplwf
  • lwplwf
  • 2017年03月06日 22:15
  • 3250

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

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

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
  • 686

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

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

TensorFlow实现Softmax Regression识别手写数字

代码(源代码都有详细的注释)和数据集可以在github下载: https://github.com/crazyyanchao/TensorFlow-HelloWorld 这个版本准确率在0.917...

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

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

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

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

TensorFlow实现Softmax Regression手写数字识别

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

《TensorfFlow实战》读书笔记(三) —— Tensorflow 实现 Softmax Regression 识别手写数字

《TensorfFlow实战》读书笔记(三) —— Tensorflow 实现 Softmax Regression 识别手写数字...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【TensorFlow-windows】(一)实现Softmax Regression进行手写数字识别(mnist)
举报原因:
原因补充:

(最多只允许输入30个字)