博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TensorFlow学习路径【转】
阅读量:7112 次
发布时间:2019-06-28

本文共 4602 字,大约阅读时间需要 15 分钟。

作者:黄璞
链接:https://www.zhihu.com/question/41667903/answer/109611087
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

前言:其实TensorFlow本身仅仅是一个分布式的高性能计算框架,想要用TF做深度学习,仅仅学习这个框架本身是没有太大意义的。因此应该将TF看作技术路线中的一个核心点,去掌握整个开发所需要的必要技术,知识。尤其是深度学习的基本原理,这对日后搭建模型,模型调参以至提出新的模型都是极其有用的。

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

有些技术在知乎是不适合公开讨论的,因此还是要贴上自己这篇博客的链接:

1. 稳定的网络【公共基础】:这是个不是技术的技术,TensorFlow毕竟出自Google,官方文档访问不是很稳定。

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

【fast peace(即简略的快节奏教程,下同)】

1.

2.

3.

【hard way(即大而全的完整或者正式教程,下同)】:

1.

2.

3.

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.

2.

3.

【hard way】

1.

2.

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.

2.

3.

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

【fast peace】(偏向概念介绍,introduction):

1.

【hard way】(偏向概念解释,数学推导,基本原理): 两本经典中的经典书籍:第一本倾向于理论阐述,第二本则是倾向于直观解释。

1.

2.

第三本则是代码应用向的,使用Theano从零搭建各种常见的网络结构,虽然是Theano,但是基本思想是统一的。

3.

6. Python常用科学计算库【公共基础】:

1. Numpy

2. Sklearn

3. Matplotlib

4. Pandas

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

7. TensorFlow:

【fast peace】(偏向应用性质,到手即用,pretrained-models,tflearn,keras等):

1. ,对TensorFlow的整体有个把握或者说印象是很有必要的,对后期的“图编程”,优化,都很有启发。

2. ,基于TensorFlow的高级API,不需要了解太多细节,应用向的可以直接看这个。

【hard way】(偏向理论性质,调用基本API手写,自定义layer,自定义kernel,自定义optimizer等):

1. ,Get Start,Programmer’s guide,Tutorials,Performance过一遍。

2.

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

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

  1. 先放上我的啦(笑)

10. 不错的资源类网站:

1.

2.

---------------------------------旧答案的分割线---------------------------------

发一波预告~最近刚用tensorflow搞完一个算是接近实际并且带有移动端应用外加inception retrain的项目,打算考试结束更新一波~:) 已更新(求助,如何使用删除线,<del>似乎无效)

TensorFlow已经发布1.0版本!

近期更新计划:
1.重新整理Learning path,将各个部分更加详尽阐述,同时给出合适的快速入手教程。
2.及时跟进最新进展,删除陈旧信息。
已更新(继续求助如何使用删除线,<del>似乎无效)

我在blog中总结了学习路线,针对新手。

文中的教程或者blog以及论文书籍基本上都是经典,推荐入门学习。

贴在这里:

在学习Tensorflow的过程中磕磕碰碰,总结一些个人心得记录于此,志同道合之友共勉~~

1.稳定的网络:Tensorflow毕竟出自Google,官方文档访问不是很稳定。而且一般来说,对于英文的文档,资料和疑问,Google搜索的结果要比Baidu好很多。(不是偏见,是各有所长,天气地图电影啥的,百度还是做的很好的)

2.Github:这是个开源程序的,Linux内核就在这个网站托管。Github的核心是Git,一种版本控制系统,已经逐渐取代SVN。这个网站托管了很多高质量的或者说世界顶尖的开源项目,比如Tensorflow。学习一下这个网站如何使用,注册个账号,学习一下Git的使用方法。这个网站有自己的tutorial和guide。

3.Linux: Tensorflow的主要运行平台就是Linux,目前在Windows上运行的方案是虚拟机,但是深度学习对计算要求还是比较高的,虚拟机效率不是太高,因此还是推荐在原生Linux中运行。新手推荐发行版是 或者。这个可以自行搜索。学习Linux也有很多好处,因为很多开源软件都only linux的。

4.Python:这是一种非常流行的脚本语言,庞大的第三方库可以快速写出短小容易理解的代码,而且也是Tensorflow的推荐开发语言。教程太多了,这里给几个优秀的教程:,,

5.深度学习(Deep Learning,DL):虽然Tensorflow已经封装好了大部分DL的细节,但是如果不了解DL的相关核心概念,就会很难着手分析问题。首先强烈推荐,通读一遍,然后还有,可以快速浏览或者只看自己不太明白的地方,还有分块介绍的,还有几篇blog,和讲的是卷积神经网络。图像识别用的比较多的就是卷积神经网络,这两篇可以看看。

6.Tensorflow:前面都是铺垫,是为了更好地使用。官方的文档不错,可以从get started然后tutorial看起,有个中文的,但是更新不及时(官方已经v1.0,这个可能是v0.8或者v0.7),可能有坑,可以和英文对照着看,还有个Tensorflow的,也不错。有篇也不错。

7.优秀博客:, , , 这几个都是我在学习中遇到的非常nice的blog,有时间读读定会有所收获。

8.经典论文及书籍:收集了一些DL的经典论文&书籍,有些杂乱,不过几乎都是经典,各取所需吧。(密码: 4w91)。各位有更好的欢迎推荐,我会整理上传。

9.几篇原创TF相关文章(持续更新):,,,

其中,Python,DL,Tensorflow是重点,其他都是辅助, 自己感觉够用即可,无需深入。学习中遇到困难首先向搜索引擎询问。

2017.4.3 更新:修正笔误,同时加了前言

2017.3.30 更新:修正一些笔误

2017.3.28 更新:完成了近期更新计划,重新整理了所有内容,同时及时跟进了新的内容

2017.2.17 更新:更新了在移动端使用TF的项目笔记,添加了近期更新计划

2016.11.25 更新:更新预告

2016.10.15 更新:更新了提及的软件版本号,添加了第九部分原创TF相关博文

2016.8.8 更新:更新了提及的软件版本号

2016.7.27 更新:重新排版,上传了资料

2016.7.6 更新:重新排版

你可能感兴趣的文章
【AS3代码】更换鼠标箭头样式,并跟随鼠标!
查看>>
Hybrid App 开发初探:使用 WebView 装载页面
查看>>
wcf异常处理
查看>>
asp.net实现OAuth认证服务端接口
查看>>
C#怎样将窗体或某个控件保存成图片(或给窗体截图)
查看>>
第三部分:Android 应用程序接口指南---第一节:应用程序组件---第一章1.Activity...
查看>>
动态规划练习 3
查看>>
经典排序之 插入排序
查看>>
POJ-3252 Round Numbers 按位DP
查看>>
Hadoop:The Definitive Guid 总结 Chapter 10 管理Hadoop
查看>>
Html.RenderPartial与 Html.RenderAction的区别
查看>>
ASP.NET那点不为人知的事(二)
查看>>
LINQ-to-SQL那点事~线程共享的DbContext与私有的DbContext
查看>>
Find Terrorists(素数筛选+素因子分解)
查看>>
刷机问题
查看>>
listView 添加addHeaderView和addFooterView以及handler.postDelayed的使用
查看>>
MySQL数据类型及列类型
查看>>
PHP 查找链表倒数第i个节点
查看>>
一个简单的基于编辑距离的英文单词查错(Python) - Muilpin.Miao的日志 - 网易博客...
查看>>
JavaScript试题【解析+答案】
查看>>