前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >春节充电系列:李宏毅2017机器学习课程学习笔记08之“Hello World” of Deep Learning

春节充电系列:李宏毅2017机器学习课程学习笔记08之“Hello World” of Deep Learning

作者头像
WZEARW
发布2018-04-13 12:01:06
8530
发布2018-04-13 12:01:06
举报
文章被收录于专栏:专知专知

【导读】我们在上一节的内容中已经为大家介绍了台大李宏毅老师的机器学习课程的backpropagation,这一节将主要针对深度学习的简单实践展开分析。本文内容涉及机器学习中深度学习简单实践的若干主要问题:Keras, 手写数字辨识网络设计、网络的尝试改进。话不多说,让我们一起学习这些内容吧。

春节充电系列:李宏毅2017机器学习课程学习笔记01之简介

春节充电系列:李宏毅2017机器学习课程学习笔记02之Regression

春节充电系列:李宏毅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-

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 专知 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档