使用Softmax回归模型训练识别MNIST数据
来源:互联网 发布:远程登陆阿里云服务器 编辑:程序博客网 时间:2024/06/02 02:29
input_data.py:
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import gzip
import os
import tempfile
import numpy
import urllib
from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets
加载MNIST数据:mnist=input_data.read_data_sets('MNIST_data/',one_hot=True)
mnist是一个轻量级的类。它以Numpy数组的形式存储着训练、校验和测试数据集。同时提供了一个函数,用于在迭代中获取的minibatch。
构建Softmax回归模型:
占位符:我们通过输入图像和目标输出类别创建节点,来开始构建计算图。
x=tf.placeholder(tf.float32,[None,784])
y_=tf.placeholder(tf.float32,[None,10])
变量:为模型定义权重W和偏置b。
W=tf.Variable(tf.zeros([784,10]))
b=tf.Variable(tf.zeros([10]))
类别预测和损失函数:
回归模型:把向量化后的图片x和权重矩阵W相乘,加上偏置b,然后计算每个分类的softmax概率值。
y=tf.nn.softmax(tf.matmul(x,W)+b)
最小化误差用的损失函数,我们的损失函数时目标类别和预测类别之间的交叉熵。
cross_entropy=-tf.reduce_sum(y_*tf.log(y))
训练模型:
定义好模型和训练用的损失函数,然后用TensorFlow进行训练。TensorFlow知道整个计算图,它可以使用自动微分法找到对于各个变量的损失梯度值。TensorFlow有大量内置的优化算法,这个例子用最速下降法让交叉熵下降,步长为0.01。
train_step=tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
这一行代码是用来往计算图上添加一个新操作,其中包括计算梯度,计算每个参数的步长变化,并且计算出新的参数值。返回的train_step操作对象,在运行时胡使用梯度下降来更新参数。因此,整个模型的训练可以通过反复地运行train_step来完成。
for i in range(100):
batch_xs,batch_ys=mnist.train.next_batch(100)
sess.run(train_step,feed_dict={x:batch_xs,y_:batch_ys})
每一步迭代,都会加载100个训练样本,然后执行一次train_step,并通过feed_dict将x和y_张量占位符用训练数据替代。
评估模型:
首先找到那些预测正确的标签。tf.argmax是一个非常有用的函数,它能给出某个tensor对象在某一维上的其数据最大值所在的索引值。由于标签向量是由0,1组成,因此最大值1所在的索引就是类别标签。f.argmax(y,1)返回的是模型对于任一输入x预测到的标签值,而tf.argmax(y_,1)代表正确的标签,我们用tf.equal来检测我们的预测是否真实标签匹配(索引位置一样表示匹配)。
correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(y_,1))
计算准确率:accuracy=tf.reduce_mean(tf.cast(correct_prediction,'float'))
测试数据上的准确率:
accuracy.eval(feed_dict={x:mnist.test.images,y_:mnist.test.labels})
- 使用Softmax回归模型训练识别MNIST数据
- MNIST和softmax回归模型
- 使用Softmax回归实现MNIST
- Logistic回归、softmax回归以及tensorflow实现MNIST识别
- TensorFlow学习笔记(3)--实现Softmax逻辑回归识别手写数字(MNIST数据集)
- Tensorflow的Helloword:使用简单Softmax Regression模型来识别Mnist手写数字
- 训练MNIST数据集模型
- 训练MNIST数据集模型
- MNIST(一):最简单的softmax regression 模型训练
- tensorflow基于softmax模型实现手写体MNIST数字集识别
- Tensorflow深度学习入门——优化训练MNIST数据和调用训练模型识别图片
- TensorFlow学习笔记(1):使用softmax对手写体数字(MNIST数据集)进行识别
- 使用matlab训练mnist模型
- tensorflow实现softmax回归(softmax regression)——简单的MNIST识别(第一课)
- MNIST——softmax回归
- MNIST和softmax回归(softmax regression)
- 手写数字识别(1)---- Softmax回归模型
- Tensorflow简单复现softmax模型对于mnist数据集分类
- 路由器之间 静态,默认,动态获取路由表设置(Cisco Packer Tracer 模拟器)
- SJTU OJ 1012. 增长率问题
- List对象利用属性进行排序的通用工具类
- 漫步最优化三十九——Fletcher-Reeves法
- CCF排队问题
- 使用Softmax回归模型训练识别MNIST数据
- ReactJS + SpringMVC整合Java利用Docker部署
- va_start和va_end使用详解
- 判断学生成绩是否有效
- Springmvc spring xml文件配置问题
- 使用枚举类型的好处
- hello vue!
- iOS Xcode~preferences(首选项)设置控制台背景和字体
- Button实现边界隐藏