李宏毅机器学习系列-深度学习小试牛刀MNIST

李宏毅机器学习系列-李宏毅机器学习系列-深度学习小试牛刀MNIST

深度学习框架

先说说tensorflow和theano,他们都是灵活,很且相对底层的,所以学起来不是那么容易上手,但是keras就封装的比较好,虽然灵活性降低了,但是学习起来容易上手,可以很快的完成代码的编写和测试,初学的比较适合:
在这里插入图片描述
有人用keras的心得,可见keras模块化非常好,就像叠积木一样:
在这里插入图片描述

手写识别MNIST的例子

这个例子就好比我们学变成的“hello wold”,当然编程的入门简单点,这个还是有点门槛的,但是keras封装得很好,可以让你快速上手,这个例子我们要做的就是构建一个神经网络,输入一张图片,输出一个数字:
在这里插入图片描述
深度学习的步骤也是散步,定义模型,定义模型的好坏,找出最好模型,我们定义一个全连接网络,输入的就是图片里所有像素点的值,因为是灰度图所以就只有一个通道,总共28x28个点的输入,然后定义两层全连接层500维,然后一个10维度输出层,用keras来写就像下面那样,很直观,从上到下就这个步骤,先定义整个模型是个序列模型,就是一步步从开始到结束,然后定义了输入层,定义输入和输出维度,定义激活函数,中间全连接层只要定义输出,因为前面的输出就是后面的输入,所以只要输入层定义输入即可:
在这里插入图片描述
然后定义训练参数的方法,这里用交叉熵,优化器是Adam,就是既有动量又是各自更新参数,然后是观察的指标是准确率,当然有很多其他的参数可以选,具体可以百度keras的文档:
在这里插入图片描述
然后是给模型输入训练数据,指定批量大小,训练轮次:
在这里插入图片描述
输入的两部分是这样的,图片被展平成784,输出是one-hot的10维编码,因为要表示0-9刚好10维向量,one-hot就是只有一个维度是1,其他都是0,这个维度的序号即预测的数字,比如[1,0,0,0,0,0,0,0,0,0]表示的是0,[0,0,1,0,0,0,0,0,0,0]表示的是2:
在这里插入图片描述

批量训练

批量训练比较好,既保持速度不快,又有一定的稳定性和随机性,批量大小是我们要调整的参数,如果太小,极限就是1,就变成了随机梯度下降了,速度是快,但是波动大,没法用GPU加速,如果太大,极限就是梯度下降,全部样本计算一遍才更新,速度比较慢,容易掉进局部最小点,鞍点等梯度近似为0的地方:
在这里插入图片描述
批量的大小很关键,有了GPU之后,可以并行计算加速很多,大小也不能太大, 因为GPU同时处理的单位数还是有限的:
在这里插入图片描述
批处理的好处,因为我们的前向传递和反向传递计算都可以用矩阵,可以借助GPU并行计算:
在这里插入图片描述
我们可以把很多的样本并成一个矩阵,一起处理,这样当然就快啦:
在这里插入图片描述
再来看看keras的另外两个方法,一个是估计损失和准确率,一个是预测:
在这里插入图片描述
在这里插入图片描述

总结

本篇主要介绍了keras的MNIST例子,介绍了一些API,介绍了批处理的原理和优势,思维导图:
在这里插入图片描述
好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵,图片来自李宏毅课件,侵删。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值