一动机:想学习深度学习算法,之前已经看过Andrew NG的课程,听完之后感觉原理也不是很难,于是萌生了上手试一把的冲动,最开始用了TensorFlow,感觉很神奇的几段代码就达成了,然而用TensorFlow感觉还是很黑盒的感觉,还是想用Python手动撸一把,于是就上手试一下。
二方法:基本原理其实不是很复杂,照着线性回归,改成sigmoid的函数就可以了,超过两个用softmax,Cost函数变化了,不过权重更新貌似挺像的。(原理笔记见这里https://blog.youkuaiyun.com/mysql403/article/details/51246822)
三过程:
1 数据下载,直接从tensorflow里面读取,
import tensorflow.examples.tutorials.mnist.input_data
mnist = input_data.read_data_sets('data/', one_hot=True)
读取到的数据有train(55000)和test(10000)两个数据集 分别有images(784,1)和labels(10,1)两项,
2 原理虽然不难撸代码还真不简单呀,(x,y)(x_,y_),w,b分别是什么样的矩阵,如何乘这些细节都要考虑。考虑完之后,训练样本要怎么训练,一时,居然想不明白了,不就是有GD算法么?可是问题是 五万个样本,分别对应五万个label输出,这更新一次,到底是一个样本一个样本,更新还是全部采样呀?于是,回去看基础,梯度下降法的三种解释(BGD,SGD,MBGD),见下方(原来是这么分着的),果断采用容易理解的SGD。

本文介绍了作者学习深度学习算法的过程,通过手动实现Logistic Regression来识别MNIST手写数字集。首先从TensorFlow中读取数据,然后详细探讨了算法原理,选择了易于理解的随机梯度下降法(SGD)进行训练,并最终获得了90%以上的正确率。
最低0.47元/天 解锁文章
6544

被折叠的 条评论
为什么被折叠?



