一个菜鸡的自强之路-MNIST手写数字分类问题(基础篇)
各种模块各种函数一一查询,还是不是很理解MNIST手写数字分类问题(基础篇)的实现,作为菜鸡先记录下来,留作以后复盘使用。废话不多说,先进入正题。
一、实例代码
当然我是一个比较懒的人,为了防止下次还需要重新手敲代码,所以这里肯定会贴一个源代码的。
[code]import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #引入模块和官方minist实例 mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) #下载测试数据和训练数据,存放在同py文件MNIST_data文件夹中 x = tf.placeholder("float", [None, 784]) #插入一个张量占位符x W = tf.Variable(tf.zeros([784,10])) #定义图变量w为一个以0.填充的784x10的数组 b = tf.Variable(tf.zeros([10])) #定义图变量b为一个以0.填充的1x10的数组 y = tf.nn.softmax(tf.matmul(x,W) + b) #x,w数组相乘再加上b做softmax运算 y_ = tf.placeholder("float", [None,10]) #插入一个张量占位符y_ cross_entropy = -tf.reduce_sum(y_*tf.log(y)) #各维度上之和取反(计算交叉熵) train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy) #tensorflow用梯度下降算法以0.01的学习率最小化交叉熵 init = tf.initialize_all_variables() #添加操作来初始化创建的变量 sess = tf.Session() sess.run(init) #启动模型,初始化变量 for i in range(1000): batch_xs, batch_ys = mnist.train.next_batch(100) sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) #随机抓取训练数据中的100个批处理数据点替换掉占位符来运行train_step correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1)) #计算1在y和y_中的索引号,如果相等则返回true,否则false accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float")) #计算true和false变成1和0后的平均值 print(i, sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})) #输出训练后测试数据的准确率 sess.close()
二、模块函数小解
1、tensorflow.placeholder()
格式:placeholder( dtype, shape=None, name=None )
意义:插入一个张量的占位符,这个张量将一直被提供.不可直接参与计算.
参数解析:dtype:要输入的张量中元素的类型.
shape:要输入的张量的形状(可选).如果未指定形状,则可以输入任何形状的张量.
name:操作的名称(可选,也就是爱写不写).
实例:
2、tensorflow.reduce_sum()
格式:reduce_sum ( input_tensor , axis = None , keep_dims = False , name = None , reduction_indices = None )
意义:计算一个张量的各个维度上元素的总和
参数解析:input_tensor:要减少的张量.应该有数字类型.
axis:要减小的尺寸.如果为None(默认),则缩小所有尺寸.必须在范围[-rank(input_tensor), rank(input_tensor))内. keep_dims:如果为true,则保留长度为1的缩小尺寸
name:操作的名称(可选,也就是爱写不写).
reduction_indices:axis的废弃的名称.
实例:
3、tensorflow.reduce_mean()
格式:reduce_mean( input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None )
意义:计算张量各个维度上元素的平均值.
参数解析:input_tensor:要减少的张量.应该有数字类型.
axis:要减小的尺寸.如果为None(默认),则减少所有维度.必须在[-rank(input_tensor), rank(input_tensor))范围内. keep_dims:如果为true,则保留长度为1的缩小尺寸.
name:操作的名称(可选,也就是爱写不写).
reduction_indices:axis的不支持使用的名称.
实例:
4、tensorflow.equal()
格式:equal( x, y, name=None )
意义:返回(x == y)元素的真值
参数解析:
x:张量.必须half,float32,float64,uint8,int8,int16,int32,int64,complex64,quint8,qint8,qint32,string,bool,complex128等类型.
y:张量.必须与 x 的类型一致.
name:操作的名称(可选,也就是爱写不写).
实例:
5、tensorflow.argmax()
格式:argmax(input, axis=None, name=None, dimension=None)
意义:返回张量沿轴最大值的索引,若最大值有重复,则返回第一个遇到的最大值的索引。
参数解析:
input:张量.必须half,float32,float64,uint8,int8,int16,int32,int64,complex64,quint8,qint8,qint32,string,bool,complex128等类型.
aixs:尺寸,必须在[0, rank(input_tensor))内,类型为 int32, int64
name:操作的名称(可选,也就是爱写不写).
实例:
6、tensorflow.exp()
格式:exp(x,name=None )
意义:计算x元素的指数。(y = e ^ x )。
参数解析:x:A Tensor。必须是下列类型之一:half,float32,float64,complex64,complex128。
name:操作的名称(可选,也就是爱写不写)。
实例:
7、tensorflow.nn.softmax()
格式:tf.nn.softmax(logits, axis=None, name=None, dim=None )
意义:计算softmax激活,返回值为一个Tensor,与logits具有相同的类型和shape。
参数解析:logits:一个非空的Tensor。必须是下列类型之一:half, float32,float64。
axis:将在其上执行维度softmax。默认值为-1,表示最后一个维度。
name:操作的名称(可选,也就是爱写不写)。
dim:axis的已弃用的别名。
softmax解剖:
softmax = tf.exp(logits) / tf.reduce_sum(tf.exp(logits), axis) #元素的指数/元素的指数和
实例:
上一篇:一个菜鸡的自强之路-线性函数实例剖析 下一篇:一个菜鸡的自强之路-MNIST手写数字分类问题(进阶篇)
- 深度学习Java类库deeplearning4j 学习笔记-MNIST手写数字分类问题
- Tensorflow之MNIST手写数字识别:分类问题(1)
- Tensorflow之MNIST手写数字识别:分类问题(2)
- 2.keras实现MNIST手写数字分类问题初次尝试(Python)
- TensorFlow - 手写数字识别 (MNIST), 多类分类 (multiclass classification) 问题
- [置顶] 【DL--19】R语言---python 使用MLP分类 MNIST 手写数字
- DL之LiR&DNN&CNN:利用LiR、DNN、CNN算法对MNIST手写数字图片(csv)识别数据集实现(10)分类预测
- 使用tensorflow利用神经网络分类识别MNIST手写数字数据集,转自随心1993
- TF:TF分类问题之MNIST手写50000数据集实现87.4%准确率识别:SGD法+softmax法+cross_entropy法—Jason niu
- TensorFlow实战5:利用卷积神经网络对图像分类(初阶:MNIST手写数字)代码实现
- 神经网络与深度学习 1.6 使用Python实现基于梯度下降算法的神经网络和MNIST数据集的手写数字分类程序
- 简单HOG+SVM mnist手写数字分类
- Multi-class Classication (多分类问题)实例--手写数字识别
- mnist数据集在caffe(windows)上的训练与测试及对自己手写数字的分类
- Tensorflow深度学习之八:再探CNN解决mnist手写数字识别问题
- TensorFlow实例(4)--MNIST简介及手写数字分类算法
- caffe上运行mnist实例---手写数字识别所遇到的问题及解决方案
- Tensorflow——MNIST手写数字数据集识别分类,准确率达到98%以上的方法实验
- Tensorflow小样例-分类模型(识别mnist手写数字)