关于学习TF

看了《机器学习速成课程》的相关新闻,开始关注并学习TensorFlow。
然后就被里面的各种名词搞蒙了:逻辑回归、梯度下降、过拟合……
稀里糊涂把教程坚持下来了,感觉读了遍天书

于是老老实实从基础学。
花了一个月时间学习python,认真练习NumPy,Pandas,matplotlib。
机器学习的各种算法了解了点原理,公式基本看不懂,推导更是完全蒙圈。
不过再看相关教程,感觉不那么陌生了,看来是有用。
进一步了解到TensorFlow是众多机器学习框架中的一个,也是最流行的那个。

这样算是有了点基础了,虽然不大牢固吧,但是再看TF觉得不那么困难了。

刚开始看TF,做了MNIST的那个入门例子。
运行出来了,但不大了解原理。
一点点学习里面用到的每一个函数。
花了两天时间,把例子用到的函数都写代码练习了一遍。
特别是feed_dict的使用,做了各种尝试。
然后再看这个例子,觉得基本上理解了。

总结如下:

  1. python基础必须有。即便不精通,至少不影响读代码。
  2. 数学基础可以不特别深厚。达不到推导公式的水平,但应该了解那些公式的名字和作用。
  3. 机器学习的基础知识需要补补,例如:回归与分类,训练集测试集验证集,准确率召回率……
  4. 不能贪快。稀里糊涂做完Demo,没弄透,到头来还是不会用。必须扎扎实实往前走。
  5. TF学习对基础不好的初学者来说,是个庞大的工程,做好长期学习准备。

推荐大家一个可以看模型的神器,Netron. 链接: https://github.com/lutzroeder/netron

这个软件工作中作用不小,在美国社区已经挺普及的了。它可以直接显示整个graph的flow,适用于.meta, .pb,.tflite格式。
比如freeze出了一个.pb file,直接就可以用这个软件打开看,每一个node的名字,weights的type, shape和values都一目了然。还自带每一个op的definition有的还带数学解析。
不少人现在需要用到fake quantization, 用这个软件可以清晰的看出哪些地方加了fake quantized nodes,哪些地方该加的没加导致toco报错(那些min/max缺失的错)。toco转化完以后还可以打开看.tflite的quantized model。

[课程推荐] 北大曹健教授的人工智能实践:TensorFlow笔记

课程内容如下:

第一讲 带着大家梳理人工智能领域的基本概念:比如什么是人工智能、什么机器学习、什么是深度学习,他们的发展历史是什么,能用他们做什么。课后,助教会带领大家安装Ubuntu系统、Python解释器 和 Tensorflow环境,把同学们的电脑进行改造,让它变得更专业。
第二讲 串讲python语法:课程将帮同学们在最短的时间内把python语法织成网,为后续课程扫清代码关;
第三讲 讲解Tensorflow的关键词,搭建神经网络:这节课会介绍张量、计算图、会话等概念,并用Python搭建你的第一个神经网络,总结出神经网络搭建的八股。
第四讲 讲解神经网络的优化:包括损失函数、学习率、滑动平均和正则化。
第五讲 讲解全连接网络:使用MNIST数据集,搭建全连接网络实现手写数字的识别。包括前向传播、反向传播、识别准确率输出和反向传播断点续训。
第六讲 讲解全连接网络应用:更改上一讲全连接网络的代码,现场手写一个数字,输出这个数字的值。
第七讲 讲解卷积神经网络:使用MNIST数据集,搭建卷积神经网络实现前向传播、反向传播、识别准确率输出和反向传播断点续训。
第八讲 讲解卷积神经网络应用:复现ImageNet数据集训练好的模型,实现特定图片的识别。

课程在中国大学MOOC上
https://www.icourse163.org/course/PKU-1002536002

这门课整体上来说还是十分难得的,但是必须要说的是对于没有基础的非常有难度,整体上要求有基本的代码阅读能力,基础的线性代数知识和一般化的电脑软件安装能力。对于零基础的小白来说真的是非常好的入门课程,老师的讲解和助教笔记都非常细致。循序渐进式的学习,需要对不清楚的地方多问多看多想,建议没有基础的同学多看几遍,至少讲的部分要全会。可以确定的是,由于人工智能的一定门槛,可能这门课的主要目的也没有想让所有人能理解大部分知识。但总体而言,这门课是降低了大家学习的门槛的,每一节课都非常具有含金量。

课程学习链接:https://www.icourse163.org/course/PKU-1002536002

第一讲 人工智能概述
1.1-概述
1.2-双系统安装
1.3-Windows虚拟机安装
1.4-Mac Tensorflow安装
1.5-Windows Anaconda TensorFlow安装

第二讲 Python语法串讲
2.1-Linux指令、Hello World
2.2-列表、元组、字典
2.3-条件语句
2.4-循环语句
2.5-turtle模块
2.6-函数、模块、包
2.7-类、对象、面向对象的编程
2.8-文件操作

第三讲 Tensorflow框架
3.1-张量、计算图、会话
3.2-前向传播
3.3-反向传播

第四讲 神经网络优化
4.1-损失函数
4.2-学习率
4.3-滑动平均
4.4-正则化
4.5-神经网络搭建八股

第五讲 全连接网络基础
5.1-MNIST数据集
5.2-模块化搭建神经网络八股
5.3-手写数字识别准确率输出

第六讲 全连接网络实践
6.1-输入手写数字图片输出识别结果
6.2-制作数据集

第七讲 卷积网络基础
7.1-卷积神经网络
7.2-lenet5代码讲解

第八讲 卷积网络实践
8.1-复现已有的卷积神经网络
8.2-用vgg16实现图片识别

第九讲 课程项目分享
9.1-真实复杂场景手写英文体识别
9.2-二值神经网络实现MNIST手写数字识别
9.3-车牌号码识别
9.4-人脸表情识别
9.5-实时目标检测、识别、计数和追踪
9.6-图片自动上色
9.7-图像风格融合与快速迁移
9.8-图像中文描述
9.9-跨模态检索
9.10-强化学习实现“不死鸟” FlappyBird

《Tensorflow:实战Google深度学习框架》 郑泽宇,顾思宇 著,电子工业出版社
《深度学习》赵申剑,黎彧君,符天凡,李凯 译,人民邮电出版社

有空时,可以看看电影 《人工智能》 让自己充满热情地进入这个领域。

机器学习资料准备以及自学方法及资料更新(持续更新)

1、资料、课程

人工智能太火了,资料特别多,但是鱼龙混杂,实际上经典的课程资料 paper就足够,到后期一定要注重多看paper

  1. 吴恩达系列
    吴恩达老师真乃人工智能届的孔夫子,在这个水平上还能致力于基础教学和入门推广功德无量啊,吴老师的课讲的也是真的好。

CS229,强推,Stanford的公开课,网易云课堂有2008年的课件和讲义,我就是对着这个学的,打印讲义一点点对着推吧。

Coursera Machine Learning,Coursera的课比较基础,其实有了CS229就不推荐看这个了。

DeepLearning.ai,也是偏基础的课程,不过还是很值得看,对传统机器学习、CV、NLP都有一个不是很深入的讲解,作为入门很棒。

Machine Learning Yearning,这本书也是偏基础,工程向,讲了实际工程项目中调参等等东西,我学的时候只出了前几章,后面没有看过。

  1. 李沐 动手学深度学习系列

网址是http://zh.gluon.ai/,强推,非常好的课程,李沐是机器学习的大家,在分布式机器学习领域非常有建树,除了广为人知的mxnet,还有parameterserver,这里就不展开说了。李沐的课程是将门斗鱼的直播,都录了下来,在网站上还有配套的代码讲解和书籍,唯一美中不足是基于gluon,这个稍微冷门一些。

  1. 莫凡系列

网址是https://morvanzhou.github.io/,怎么说呢,比起其他课程还是逊色不少,不过讲的很基础,而且是不多的讲解RL的中文课程。

  1. 其他公开课

CS231N,强推,stanford公开课之二,李飞飞的cv实验室出品,讲师是大名鼎鼎的Justin Johnson,虽然是讲CV,但对DeepLearning的基础也讲的非常详细,cs229是最好的ML课程,cs231n是最好的DL课程。

附加:算法导论 6.046J,大名鼎鼎的MIT算法导论公开课,虽然不是ML/DL向,但是基础算法还是要会的,毕竟算法工程师首先是工程师,课程较难,很多名校本科上过这门课,大部分没有上过,还是有必要抽空看看的

2、书籍

《CS229讲义》,为啥把这个单独拿出来说呢,因为这个讲义真的就是一本书,有详细的推导过程,并且很多同学看公开课会忽略讲义,一定注意。

《统计学习方法》 李航,机器学习最常用的书,人称小蓝书,其实这本书不适合入门,里面很多推导晦涩难懂,但是讲的很详细。有些地方的推导方式和写作习惯跟吴恩达不一样,所以两个一起看有时候会很迷。

《机器学习》 周志华,人称西瓜书,不仅封面是西瓜,里面的例子也全是西瓜。难度比《统计学习方法》简单不少,还有各种西瓜例子,入门首选。

3、项目

项目的话强烈推荐kaggle!!!!

在开始kaggle之前,请看看Kaggle的三个GettingStarted比赛,分别是手写识别(CV),泰坦尼克预测(分类),房价预测(回归),这三个比赛就是教学比赛,kernel和discuss版块有大量的教学,好几个会长篇讲如何基本的使用DNN、xgb、lgb、sklearn这些工具,和如何开始做机器学习。

当你开始打featured的比赛的时候,有一点要明确,去打比赛不是为了赢,你是个没有基础的初学者,很可能也没有队友,只能solo,想拿名次就算了,打kaggle的目的是为了学习,为什么选kaggle不选天池或其他比赛呢?因为kaggle的氛围非常非常open,讨论区和kernel区一定会有人给出自己的完整思路和代码,不仅有base model,还有各种有用的数据处理代码,甚至很常见到前10的队伍公开自己的思路甚至代码!这是其他比赛不具备的,你可以在看别人代码,改进自己代码中成长。

4、积累

这是自学最欠缺的,没有积累,尤其是科研积累,没有人带自己想搞出一篇工作就免了吧,但是熟读某个方向的paper,对该方向有深入了解是必须的,如果仅仅是达到见过或者会用的程度,肯定拿不到offer的。具体的积累看是什么方向,github上有很多repo是经典paper集合比如这个repo,可以对照着看,也要关注该领域顶会每年的文章,还有就是对自己项目中用到的model、方法的相关工作要熟读。

5、计划

时间紧迫,给自己定一个清晰的计划还是很重要的,笔者自己是打印了一份日历,然后把暑期实习、秋招等关键时间点和自己计划完成的deadline日期做上标记,每天干过的事情标在当天的日期上,然后划掉这一天,每天看着时间会有紧迫感促进你学习。

6、老师

自学没有老师,但俗话说三人行必有我师,周围相关方向的同学,该请教就请教,有些东西自己搞是搞不出来的,但会的同学随便点你一下这块就过去了。

参考资料与推荐阅读

本书是一本 TensorFlow 技术手册,并不包含太多关于机器学习 / 深度学习的理论知识。然而一本好的机器学习入门资料仍然对 TensorFlow 技术的理解至关重要。对于希望入门机器学习 / 深度学习原理的读者,笔者给出(具有个人主观色彩和局限的)以下阅读建议。

如果你是一名在校大学生,具有较好的数学基础,可以从以下教材入手,作为学习机器学习的起点:

李航. 统计学习方法 . 清华大学出版社,2012.
周志华. 机器学习 . 清华大学出版社,2016.
如果你希望更具实践性的内容,推荐以下书籍:

Aurélien Géron. 机器学习实战:基于 Scikit-Learn 和 TensorFlow . 机械工业出版社,2018.

探索机器学习,使用Scikit-Learn全程跟踪一个机器学习项目的例子;探索各种训练模型;使用TensorFlow库构建和训练神经网络,深入神经网络架构,包括卷积神经网络、循环神经网络和深度强化学习,学习可用于训练和缩放深度神经网络的技术。

主要分为两个部分。第一部分为第1章到第8章,涵盖机器学习的基础理论知识和基本算法——从线性回归到随机森林等,帮助读者掌握Scikit-Learn的常用方法;第二部分为第9章到第16章,探讨深度学习和常用框架TensorFlow,一步一个脚印地带领读者使用TensorFlow搭建和训练深度神经网络,以及卷积神经网络。

学习推荐:

《机器学习实战基于Scikit-Learn和TensorFlow》高清中文版PDF,带目录,文字能够复制;高清英文PDF,564页,带目录,文字能够复制;中英文两版可以对比学习。配套源代码;

下载: https://pan.baidu.com/s/14G_0aeMh8qiq4TtIvpefWw

提取码: b46k

郑泽宇,梁博文,and 顾思宇. TensorFlow:实战 Google 深度学习框架(第 2 版) . 电子工业出版社,2018.

TensorFlow是谷歌2015年开源的主流深度学习框架,目前已得到广泛应用。《TensorFlow:实战Google深度学习框架(第2版)》为TensorFlow入门参考书,旨在帮助读者以快速、有效的方式上手TensorFlow和深度学习。书中省略了烦琐的数学模型推导,从实际应用问题出发,通过具体的TensorFlow示例介绍如何使用深度学习解决实际问题。书中包含深度学习的入门知识和大量实践经验,是走进这个前沿、热门的人工智能领域的优选参考书。

第2版将书中所有示例代码从TensorFlow 0.9.0升级到了TensorFlow
1.4.0。在升级API的同时,第2版也补充了更多只有TensorFlow 1.4.0才支持的功能。另外,第2版还新增两章分别介绍TensorFlow高层封装和深度学习在自然语言领域应用的内容。

《TensorFlow:实战Google深度学习框架(第2版)》适用于想要使用深度学习或TensorFlow的数据科学家、工程师,希望了解深度学习的大数据平台工程师,对人工智能、深度学习感兴趣的计算机相关从业人员及在校学生等。

如果你对大学的知识已经生疏,或者还是高中生,推荐首先阅读以下教材:

汤晓鸥,and 陈玉琨. 人工智能基础(高中版) . 华东师范大学出版社,2018.
对于贝叶斯的视角,推荐以下入门书籍:

皮隆,辛愿,钟黎,and 欧阳婷. 贝叶斯方法:概率编程与贝叶斯推断 . 人民邮电出版社,2017.

如果你喜欢相对生动的视频讲解,可以参考以下公开课程:

台湾大学李宏毅教授的《机器学习》课程 ( 讲义点此 ,中文,讲解生动且更新及时)
谷歌的《机器学习速成课程》 (内容已全部汉化,注重实践)
Andrew Ng 的《机器学习》课程 (英文含字幕,经典课程,较偏理论,网络上可搜索到很多课程笔记)
相对的,一本不够适合的教材则可能会毁掉初学者的热情。对于缺乏基础的初学者,不 推荐以下书籍:

Goodfellow, Ian, Yoshua Bengio, and Aaron Courville. 深度学习 . 人民邮电出版社,2017.

又名 “花书”(源于封面),英文版 在线开放阅读 ,中译见 exacity/deeplearningbook-chinese 。这是一本深度学习领域的全面专著,但更像是一本工具书。
Bishop, Christopher M. Pattern Recognition and Machine Learning . Information Science and Statistics. New York: Springer, 2006.

又名 “PRML”(书名首字母缩写),目前已开放 免费下载 。以贝叶斯的视角为主,同时其难度可能很不适于缺乏数学基础的入门者。
重要

不推荐以上书籍,并不是说这些作品不够优秀! 事实上,正是因为这些书籍太优秀,影响力太大,才以至于不得不拿出来特意提醒一下,这些书可能并不适合于绝大多数初学者。就像应该很少有学校用《计算机程序设计艺术》(TAOCP)作为计算机的入门教材一样。对于已经入门或者有志于深层次研究的学者,当可从这些书籍中受益匪浅。

发布了71 篇原创文章 · 获赞 19 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Theo93/article/details/102537792