新手向的TensorFlow学习之路2(Learning paths 2)

TL;DR:有同学反应资源太多不知道从何看起,或者有点基础了想快速上手,因此就直接把几个比较好的教程放在这里,后面的内容作为参考。

  1. Stanford的CS 20SI课程,专门针对TensorFlow的课程,Tensorflow for Deep Learning Research
  2. 两本书籍:TensorFlow Machine Learning Cookbook以及TensorFlow for Machine Intelligence,这两本网络均有pdf版本,请自行搜索。
  3. Udacity公开课,深度学习

第一篇学习之路写于2016年6月份,时过境迁,特别是深度学习这个日新月异的领域,隔了那么久,不得不说已经有些过时了,并且随着学习的深入,越发觉得之前的学习之路过于笼统,加之TensorFlow发布了1.0正式版,因此整理一下,再次写一篇。这次在内容的结构上将会大体分为三种,首先是公共基础部分,这个无需多解释。另外,一个是偏向应用性质的快节奏(fast peace),针对不想也没必要深入了解理论知识希望尽快应用的人群,另一种是偏向研究性质的人群(hard way),针对例如研究生之类希望深入理论知识的人群。当然,hard way的前提是fast peace。但是写法上,并没有分别写,因为某种意义上这两种是相互包含的,分开写会显得冗长与重复,因此采用粗体标记提示特定部分是属于哪一种。

0. 不是前提的前提–英语阅读【公共基础】:需要有扎实的英语阅读能力,其实与其说扎实,不如说是能沉下心看英语。其实我最开始看这些大段英文文档的时候,我是拒绝的,后来发现真的,这是绕不过去的坎,再后来坚持背英语单词(推荐扇贝单词)加上耐着性子读好了很多。至于原因,为什么读英文,那是因为不仅很多优秀的文档有且仅有英文的,更是很多国内的开发者也会用英文写。而且,如果对于做学术的人,那么英语作为通用语言更是要熟练掌握。但是我尽量每个部分教程都给出一份中文的,尽量保证在不想看英文的情况下也有不错的指导。

1. 翻墙【公共基础】:这是个不是技术的技术,TensorFlow毕竟出自Google,官方文档访问不是很稳定,而且Google搜索的结果要比Baidu好很多(学术,代码,外文类,这是有目共睹的)。有些免费一键翻墙的软件比如Lantern,打不开就这个(在releases中下载对应操作系统版本),或者赛风。高级一点的是Shadowsocks,这个不同于前面的一键翻墙工具,需要自己配置服务器或者购买配置好的服务。

在这里插一句,本来是不想说这些的,有推销嫌疑,但是有很多人文这个问题,有哪些推荐的梯子。我是用的是Digitalocean(这是我的推荐链接 ,使用的话你我都可以获得奖励)搭建服务器,很稳定,$5(约35人民币)一个月,1T流量(肯定是用不完的,好像超了也不收费),在服务器上跑了一个shadowsocks的服务端外加这个wordpress的博客。网上有很多搭建教程。或者如果想省事,可以与我合租,服务器已经搭建好了,简单配置即可。可以发我Gmail,在网站的About页面有。p.s. 几人合租就几分之一$5,无额外费用,程序员纯纯的友谊你懂的:)

2. Github【公共基础】:这是个开源程序的网站,Linux内核就在这个网站托管。Github的核心是Git,一种版本控制系统,已经逐渐取代SVN。这个网站托管了很多高质量的或者说世界顶尖的开源项目,比如TensorFlow。学习一下这个网站如何使用,注册个账号,学习一下Git的使用方法。这个网站有自己的tutorial和guide。而且后期自己的项目管理多半也会用到git,所以,早点学习肯定是有好处的。

【fast peace(即简略的快节奏教程,下同)】
1. Git 参考手册(推荐)
2. git – the simple guide
3. Git – Quick Guide

【hard way(即大而全的完整或者正式教程,下同)】
1. Pro Git与Git的参考文档
2. Git – Tutorial
3. Git Tutorial

3. Python【公共基础】:这是一种非常流行的脚本语言,庞大的第三方库可以快速写出短小容易理解的代码,而且也是TensorFlow的推荐开发语言。不仅仅是对于TensorFlow这么语言很重要,对于整个机器学习,应用层面放眼望去基本就是Python与R的天下了,而R更偏向与统计学领域,深度学习Python简直是红透的半边天,当然我是针对初学者,如果已经掌握了其他语言,例如Java,C++,那么其实理论上而言可以不用掌握Python,选择自己熟悉的语言的API即可。但是对于TensorFlow,只有Python的API最全面,文档社区也最完善(截至2017年3月),当然随着TensorFlow的发展都会完善,可是现在就要用呀:)。而且,最重要的是,对于已经掌握其他语言的人来说,学习Python不会花费太久的。并且,Pytohn写起来短小精悍,易于理解,很适合这种用来搭架子调用框架而且不怎么需要考虑效率的场景(一般来讲,最需要效率的部分框架会用C++实现,Python仅仅是作为顶层去调用)。另外,推荐学习Python3,这才是Python的未来,2.7的支持在2020年会停止。而且,后面会知道的,对于Python2.7向3的支持很多情况仅仅是import几个future包。

【fast peace】
1. Tutorial – Learn Python in 10 minutes
2. Python Quick Guide
3. Google’s Python Class

【hard way】
1. 廖雪峰的Python教程
2. The Python Tutorial

4. Linux【公共基础】:TensorFlow的主要运行平台之一就是Linux,但是正式版对Windows的支持日趋完善,真的没时间学习Linux平台可以先在Windows上运行TensorFlow。不过,学习Linux真的用不了多久(当然是指做开发环境日常日用,立志做系统管理员还是要下一番功夫的)。推荐Ubuntu 16.04 LTS,这不仅是“新手友好”的发行版,也是Google很多产品的官方支持版本,官方支持就会带来很多便捷以及少一些”坑“。LTS(长期支持版本)的加成保证了系统的稳定(稳定不仅指运行稳定,更是指软件环境,例如python不会突然默认变成3.6,gcc不会突然就默认变成6,插一句,之所以这么说,是因为以前用的是Arch,装了TensorFlow一直跑的很开心,直到有天突然发现跑不起来了,原来是Arch升级了一下Python的默认版本变成了3.6了XD。)

【fast peace】
1. 我的知乎回答

【hard way】
1. UNIX Tutorial for Beginners
2. Linux Tutorial
3. Linux工具快速教程

5. 深度学习–概念与基础:

【fast peace】(偏向概念介绍,introduction):
1. 深度学习wiki
【hard way】(偏向概念解释,数学推导,基本原理):
两本经典中的经典书籍:第一本倾向于直观性的解释,第二本就更加理论了。
1. Deep Learning
2. Neural Networks and Deep Learning
代码应用向的,使用Theano从零搭建各种常见的网络结构。
3. Deep Learning Tutorials

6. Python常用科学计算库【公共基础】:
1. Numpy
2. Sklearn
3. Matplotlib
4. Pandas

虽然说是公共基础部分,但是系统学习这几个库,也不是一件容易的事,而且很耗时间。因此还是遵循够用即可的原则。但是还是想列在这里,因为后来发现如果这几个库掌握的比较熟练,数据预处理后处理都能极大地节省时间,当你还在苦苦想如何设计预处理方法的时候,其实去查一查手册,大概率在这几个库里已经写好了。这几个库的官方文档都很优秀,比如Pandas的10 Minutes to pandas。因此,闲余时间多看看官方tutorial即可。

7. TensorFlow:
【fast peace】(偏向应用性质,到手即用,pretrained-models,tflearn,keras等):
1. TensorFlow的三份白皮书,对TensorFlow的整体有个把握或者说印象是很有必要的,对后期的“图编程”,优化,都很有启发。
2. TFLearn,基于TensorFlow的高级API,不需要了解太多细节,应用向的可以直接看这个。

【hard way】(偏向理论性质,调用基本API手写,自定义layer,自定义kernel,自定义optimizer等):
1. 官网教程,Get Start,Programmer’s guide,Tutorials,Performance过一遍。
2. Google的Udacity课程

8. 论文阅读路线图【hard way】: github上有个很有名的Deep Learning papers reading roadmap,已经过万stars,从事深度学习科研者的必读清单,在我写的上一篇学习之路中,虽然整理了很多论文,但是过于杂乱,在此就不做引用啦。

9. 相关博客等其他资源:

  1. 先放上我的博客啦(笑)
  2. Beginner-level tutorials for a powerful framework
  3. CS231n: Convolutional Neural Networks for Visual Recognition
  4. CS224n: Natural Language Processing with Deep Learning
  5. UFLDL Tutorial
  6. UFLDL教程(上面UFLDL Tutorial旧版,但是是中文的)
  7. First Contact With TensorFlow
  8. Deep Learning
  9. colah’s blog(推荐,写了很多晦涩概念可视化的博客)
  10. DeepLearning4J(虽然是一个面向Java的深度学习框架,但是文档很好,通用性也很强)

10. 不错的资源类网站:
1. arxiv-sanity
2. GitXiv

如果您觉得作者的博客对您有用,不妨鼓励作者一下,作者将会更加努力写出高质量博客。

2 Comments


  1. 哈哈哈哈哈哈程序员纯纯的友谊
    笑崩了

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *