春节充电系列:李宏毅2017机器学习课程学习笔记03之梯度下降
春节充电系列:李宏毅2017机器学习课程学习笔记04分类(Classification)
春节充电系列:李宏毅2017机器学习课程学习笔记05之Logistic 回归
春节充电系列:李宏毅2017机器学习课程学习笔记06之深度学习入门
春节充电系列:李宏毅2017机器学习课程学习笔记07之反向传播(Back Propagation)
课件网址:
http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html
视频网址:
https://www.bilibili.com/video/av15889450/index_1.html
李宏毅机器学习笔记8 “Hello World” of Deep Learning
在我们最开始学习c语言的时候,第一个程序自然是hello world程序,deep learning中也有类似的程序—mnist手写数字辨识。因为deep learning最终是用于工程实现,所以亲自动手实现很重要,在实际操作中,会遇到种种问题,因为deep learning要是做好的话远没有那么简单。
1. keras
深度学习操作平台有很多,之前已有提到,我们这里使用keras
下面是关于keras一些信息
Keras看起来貌似是很高级的东西,但它实际的操作过程类似搭积木
2.手写数字辨识网络设计
手写数字辨识做的是输入手写数字的图片,机器要辨识它是哪个数字,类似一个多分类问题
我们先定义loss function,用交叉熵表示损失函数,梯度下降方法采用adam
然后准备训练集,定义batch size(100),epoch(20)等值,输入、输出图片表示为numpy array的形式,输入数组维度为2维,第一维为输入个数,第二维为输入维度(784),输出数组维度也是2维,第一维是输出个数,第二维是输出维度(10)。
Batch指的每次做梯度下降取的训练图片,batch size告诉batch有多大,一个batch更新一次参数,所有batch全被挑选称为一次epoch。
当batch size为1时,就成了Stochastic gradient descent
更小尺寸的batch自然意味着在每个epoch中更新参数次数越多,但并非batch越小效率越高,因为由于平行运算,计算10个example的时间和计算一个example的时间几乎是一样的。Batch size太大,取得的效果也很差。
然后我们继续建立各个网络层
最后输出结果
3. 尝试改进
从上图可以看出正确率只有11%,很令人失望。
是不是隐藏层神经元太少了导致的,将Units由633改为689后
正确率0.2166,依然很差
Emmm,是不是神经网络太浅了导致的,隐藏层加为10层
最后结果又是0.11,很难受
正确改进方法下次再说
请关注专知公众号(扫一扫最下面专知二维码,或者点击上方蓝色专知),
后台回复“LHY2017” 就可以获取 2017年李宏毅中文机器学习课程下载链接~
-END-
专 · 知
人工智能领域主题知识资料查看获取:【专知荟萃】人工智能领域26个主题知识资料全集(入门/进阶/论文/综述/视频/专家等)
同时欢迎各位用户进行专知投稿,详情请点击:
【诚邀】专知诚挚邀请各位专业者加入AI创作者计划!了解使用专知!
请PC登录www.zhuanzhi.ai或者点击阅读原文,注册登录专知,获取更多AI知识资料!
请扫一扫如下二维码关注我们的公众号,获取人工智能的专业知识!
请加专知小助手微信(Rancho_Fang),加入专知主题人工智能群交流!
点击“阅读原文”,使用专知!