Tensorflow实战学习笔记(1)

TensorFlow实现Softmax Regression识别手写数字

书本P46-53

一、相关概念

何谓MNIST?何谓One-Hot编码?何谓Softmax回归等书中的名词可以参见这篇博客:https://blog.csdn.net/qq_37608890/article/details/79343860

二、第一步:分类 Softmax Regression

  • 工作原理:将可以判定为某类的特征相加,然后将这些特征转化为判定是这一类的概率。
  • 书中具体写的很详细了,也可以参考这篇博客进一步理解Softmax Regression具体在tensor中的实现:https://blog.csdn.net/pain_gain0/article/details/82263282
    个人认为这就是一个分类的作用

三、第二步:定义损失函数

这里的loss function用Cross-entropy定义,损失函数可以用来描述分类精度,神经网络训练的目的就是不断将这个loss减小直至达到一个全局最优或者局部最优解。
Cross-entropy表达式:
H y ′ ( y ) = − ∑ i y i ′ l o g ( y i ) H_y{'}(y)=-\sum_{i}y_i{'}log(y_i) Hy(y)=iyilog(yi)
其中 y y y是预测的概率分布, y ′ y{'} y是真实的概率分布, 即Label的one-hot编码
用tensorflow描述为:

y_ = tf.placeholder(tf.float32,[None,10]
corss_entropy = tf.reduce_mean(-tf.reduce_sum(y_*tf.log(y),reduction_indices=[1]))

先定义一个placeholder,输入是真实的label,用来计算corss-entropy损失函数
tf.reduce_mean则是用来对每个batch数据结果求均值

四、第三步:定义优化算法

采用SGD随机梯度下降

五、第四步:使用TensorFlow全局参数优化器

六、第五步:迭代地对数据进行训练并对准确率评测

迭代地执行操作train-step,这里每次随机从 训练集中 取100个样本构成一个mini-batch并feed给placeholder(即损失函数中的输入 y i ′ y_i{'} yi)

for i in range(1000)
	batch_xs, batch_ys = mnist.train.next_batch(100)
		train_step.run({x:batch_ws,y:batch_ws})		#train_step以run方法运行,基本语法x:,y:

再对模型准确率进行验证:

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

其中,tf.argmax是从一个张量tensor中寻找最大值的序号,这里表现为:
tf.argmax(y,1)——各个预测的数字中概率最大的哪一个
tf.argmax(y_,1)——样本真实数字的类别
tf.equal——判断预测的数字类别是否是正确的类别,最后返回计算分类时候正确的操作correct_prediction

将此correct_prediction转化为float32类型再求平均(tf.reduce_mean)

accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值