笔记|李宏毅老师机器学习课程,视频15Keras Demo
数据科学与人工智能
共 5615字,需浏览 12分钟
· 2021-04-09
《学习笔记》专栏·第15篇
文 | MLer
1521字 | 5分钟阅读
【数据科学与人工智能】开通了机器学习群,大家可以相互学习和交流。请扫描下方二维码,备注:姓名-ML,添加我为好友,诚邀你入群,一起进步。
感谢李宏毅老师的分享,他的课程帮助我更好地学习、理解和应用机器学习。李老师的网站:http://speech.ee.ntu.edu.tw/~tlkagk/index.html。这个学习笔记是根据李老师2017年秋季机器学习课程的视频和讲义做的记录和总结。因为这个视频是在Youtube上面,有些朋友可能无法观看,我把它搬运下来放在云盘上面,大家点击阅读原文,就可以直接在手机随时随地观看了。再次,感谢李老师的付出和贡献。
这门课,共有36个视频,每个视频播放的时间不一。我按着视频播放的顺序,观看,聆听和学习,并结合讲义,做学习笔记。我做学习笔记目的有三:
1 帮助自己学习和理解机器学习
2 记录机器学习的重要知识、方法、原理和思想
3 为传播机器学习做点事情
视频15:Keras Demo
一、Keras实现深度学习的Demo
李老师现场演示如何利用Keras2.0实现深度学习。
直接上代码了
1import numpy as np
2from keras.models import Sequential
3from keras.layers.core import Dense, Dropout, Activation
4from keras.layers import Conv2D, MaxPooling2D, Flatten
5from keras.optimizers import SGD, Adam
6from keras.utils import np_utils
7from keras.datasets import mnist
8
9
10def load_data(): # categorical_crossentropy
11 (x_train, y_train), (x_test, y_test) = mnist.load_data()
12 number = 10000
13 x_train = x_train[0:number]
14 y_train = y_train[0:number]
15 x_train = x_train.reshape(number, 28 * 28)
16 x_test = x_test.reshape(x_test.shape[0], 28 * 28)
17 x_train = x_train.astype('float32')
18 x_test = x_test.astype('float32')
19 # convert class vectors to binary class matrices
20 y_train = np_utils.to_categorical(y_train, 10)
21 y_test = np_utils.to_categorical(y_test, 10)
22 x_train = x_train
23 x_test = x_test
24 x_test = np.random.normal(x_test) # 加噪声
25 x_train = x_train / 255
26 x_test = x_test / 255
27
28 return (x_train, y_train), (x_test, y_test)
29
30
31if __name__ == '__main__':
32 '''
33 注意事项如下:
34 1、batch_size=100,epochs=20为宜,batch_size过大会导致loss下降曲线过于平滑而卡在local minima、saddle point或plateau处,batch_size过小会导致update次数过多,运算量太大,速度缓慢,但可以带来一定程度的准确率提高
35 2、hidden layer数量不要太多,不然可能会发生vanishing gradient(梯度消失),一般两到三层为宜
36 3、如果layer数量太多,则千万不要使用sigmoid等缩减input影响的激活函数,应当选择ReLU、Maxout等近似线性的activation function(layer数量不多也应该选这两个)
37 4、每一个hidden layer所包含的neuron数量,五六百为宜
38 5、对于分类问题,loss function一定要使用cross entropy(categorical_crossentropy),而不是mean square error(mse)
39 6、优化器optimizer一般选择adam,它综合了RMSProp和Momentum,同时考虑了过去的gradient、现在的gradient,以及上一次的惯性
40 7、如果testing data上准确率很低,training data上准确率比较高,可以考虑使用dropout,Keras的使用方式是在每一层hidden layer的后面加上一句model.add(Dropout(0.5)),其中0.5这个参数你自己定;注意,加了dropout之后在training set上的准确率会降低,但是在testing set上的准确率会提高,这是正常的
41 8、如果input是图片的pixel,注意对灰度值进行归一化,即除以255,使之处于0~1之间
42 9、最后的output最好同时输出在training set和testing set上的准确率,以便于对症下药
43 '''
44 # load training data and testing data
45 (x_train, y_train), (x_test, y_test) = load_data()
46
47 # define network structure
48 model = Sequential()
49
50 model.add(Dense(input_dim=28 * 28, units=500, activation='relu'))
51 # model.add(Dropout(0.5))
52 model.add(Dense(units=500, activation='relu'))
53 # model.add(Dropout(0.5))
54 model.add(Dense(units=10, activation='softmax'))
55
56 # set configurations
57 model.compile(loss='categorical_crossentropy',
58 optimizer='adam', metrics=['accuracy'])
59
60 # train model
61 model.fit(x_train, y_train, batch_size=100, epochs=20)
62
63 # evaluate the model and output the accuracy
64 result_train = model.evaluate(x_train, y_train)
65 result_test = model.evaluate(x_test, y_test)
66 print('Train Acc:', result_train[1])
67 print('Test Acc:', result_test[1])
你可以把上述代码放在Notebook里面或者一个Py文件,然后运行查看对应的结果。
更多有趣的内容,请点击阅读原文,观看视频。
朋友们,在学习中有什么问题或者想法,请加入机器学习群,大家一起讨论,共同进步。
每周一书
课程视频点击
↓↓↓
评论
李彦宏:开源大模型不如闭源,后者会持续领先;周鸿祎:“开源不如闭源” 的言论是胡说八道
架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号该公众号已被封禁0、李彦宏:开源大模型不如闭源,后者会持续领先当今
源码共读
0
特斯拉中国Model Y、S、X全系降价;盒马否认侯毅张勇出价20亿美元联手买下盒马;瑞幸回应“不招聘上海人”
特斯拉中国Model Y、S、X全系降价特斯拉中国Model Y售价降至24.99万元人民币,MODEL Y长续航版售价降至29.09万元人民币。特斯拉中国 MODEL Y高性能版售价降至35.49万元人民币。特斯拉中国MODEL S售价降至68.49万元人民币。特斯拉中国 MODEL S PLAI
亿欧网
0
中科曙光董事长李国杰院士被证监会立案调查:涉嫌违法炒股
最近,中科曙光(603019.SH)的董事长李国杰成为舆论焦点。据2024年4月19日晚的公告显示,李国杰因涉嫌短线交易本公司股票而被证监会立案调查。李国杰,一位80岁的中国工程院院士,其职业生涯几乎涵盖了中国计算机科技领域的所有重要发展阶段。1943年5月出生的李国杰在湖南省邵阳市长大,早年毕业于
Python涨薪研究所
0
文末送书 | 大模型时代下如何学习云原生
《containerd 原理剖析与实战》新书内购中,点击阅读原文,限时 69.9 元购买。文末免费赠书大模型与云原生近年来,大语言模型的热度可谓是愈发高涨,尤其是今年年初 Sora 的出现,更是让全球再次看到了AIGC 的巨大威力。Sora 生成实例视频---几头巨大的长毛猛犸踏着积雪的草地而来在当
云原生实验室
10
轻松学习C#:百度行驶证C++离线SDK接入详解
效果 先看最终效果SDK 拿到完整包如图,687M解压后看看内容发现有个readme.txt,那就先看看内容1:用vs2015打开sln工程,最好用vs2015 comunity版本,可微软官网下载。2:sdk的doc目录有pdf接口文档。3:工程总入口main.cpp、请参考示例实现您的功能。4:
DotNet NB
9
日语五十音图学习难吗?
学习日语的初学者们都知道,我们学习日语最初就必须要接触日语五十音图,虽然相对其他语言来说,五十音图挺不是很难学,但是很多初学者可能会记不住,别担心,老师为大家带来了学习经验分享,一起来看看吧!五十音图就是日语最基础的基础,也就是地基。由于日语的元音比较单调,只有a/i/u/e/o这五种,再和各种辅音
python教程
0
大视频周报|全国酒店电视操作复杂专项治理动员部署电视电话会在京召开
小美播报本 期 看 点广电总局发4K超高清机顶盒技术新标准;总局公示《智能电视操作系统 第8部分:分类分级》等两项行业标准;工信部组织开展今年5G轻量化(RedCap)贯通行动;全国酒店电视操作复杂专项治理动员部署电视电话会在京召开......(今日流媒体vip可免费获取报告PDF版,详情请见文末。
流媒体网
0
课程合集
✔️更新完毕的课程1.《AKShare-初阶-使用教学(第一期) 》-1小时上手AKShare快速搭建起使用环境并成功获取数据。无论是否有 Python 编程经验,通过学习该视频课程,都可以快速上手使用 AKShare!2.《开源项目巡礼(第一期)》-上手目前最流行的数据科学开源项目本课程的主要目的
数据科学实战
9