TensorFlow官方文档学习(一)

本文介绍了一种基于softmax回归的MNIST手写数字识别模型。通过将图像展平为一维向量并利用softmax函数分配概率,结合TensorFlow进行模型训练及优化。通过交叉熵评估模型性能。

一、mnist

一个对手写数字进行识别的模型。
思路:
1、将训练集中获取的手写数字图像进行某一统一方式(全部按行或全部按列)的展开,得到一个长向量(这是为了利用softmax做一维的回归,不过损失了二维信息),用一个二维张量来索引某一个样本中的某一像素。
2、softmax模型:用来给不同的对象分配概率(即使在更精细的模型中,最后一步,往往也需要用softmax来分配概率
两步:
① 加权求和,并引入偏置
对于给定输入图片x,其代表图像为数字i的证据为
evidencei=∑i(wi,jxj)+bievidence_i=∑_i(w_{i,j}x_j)+b_ievidencei=i(wi,jxj)+bi
② 用softmax函数将evidence转换成概率,即
y=softmax(evidence)y=softmax(evidence)y=softmax(evidence)
将输入值当成幂指数求值,再正则化这些结果
更紧凑的写法为 y=softmax(Wx+b)y=softmax(Wx+b)y=softmax(Wx+b)
3、为了节省在python外使用别的语言进行复杂矩阵运算带来的开销,TensorFlow做出的优化为,先用描述一系列可交互的操作,最后统一放在python外执行。
占位符placeholder来描述这些可交互的单元:

   import tensorflow as tf
   x=tf.placeholder(tf.float32,[None,784])

变量Variable来表示权重和偏置:

W=tf.Variable(tf.zeros([784,10]))
b=tf.Variable(tf.zeros([10]))

则模型可以用以下代码实现:

y=tf.nn.softmax(tf.matmul(x,W)+b)

4、模型训练
用交叉熵(cross-entropy)来评判模型的好坏,其表达式为
Hy′(y)=−∑iyi′log(yi)H_{y'}(y)=-∑_iy_i'log(y_i)Hy(y)=iyilog(yi)
其中y是预测的概率分布,y’是实际的概率分布(即训练集对应的真实标签,是一个one-hot vector)
定义

y_=tf.placeholder(tf.float32,[None,10])

计算交叉熵

cross_entropy=-tf.reduce_sum(y_*tf.log(y))

tensorflow可以自动利用反向传播算法,根据选择的优化器来最小化你的目标函数

train_step=tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)

5、训练准备
初始化操作

init=tf.initialize_all_variables

TensorFlow是在一个Session中启动模型

sess=tf.Session()
sess.run(init)

6、开始训练

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个数据作为一个batch
7、模型评估
tf.argmax给出对象在某一维度上最大值所对应的索引值,可以用来判断预测是否准确,即

correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(y_,1))

equal函数返回布尔值,用cast函数转化为浮点数后求均值来计算正确率

accuracy=tf.reduce_mean(tf.cast(correct_prediction,"float"))

8、计算学习到的模型在训练集上的准确率

print sess.run(accuracy,feed_dict={x:mnist.train.images,y:mnist.train.labels})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值