TensorFlow学习线路
如何高效的学习 TensorFlow 代码? 或者如何掌握TensorFlow,应用到任何领域?
链接:https://www.zhihu.com/question/41667903/answer/109611087
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
有同学反应资源太多不知道从何看起,或者有点基础了想快速上手,因此就直接把几个比较好的教程放在这里,后面的内容作为参考。
- Stanford的CS 20SI课程,专门针对TensorFlow的课程,Tensorflow for Deep Learning Research
- 两本书籍:TensorFlow Machine Learning Cookbook以及TensorFlow for Machine Intelligence,这两本网络均有pdf版本,请自行搜索。
- Udacity公开课,深度学习
有些技术(网络方面)在知乎是不适合公开讨论的,因此还是要贴上自己这篇博客的链接:新手向的TensorFlow学习之路2(Learning paths 2)
前言:其实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. Git 参考手册(推荐)
【hard way(即大而全的完整或者正式教程,下同)】:
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
【hard way】:
1. 廖雪峰的Python教程
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
3. Linux工具快速教程
5. 深度学习–概念与基础:
【fast peace】(偏向概念介绍,introduction):
1. 深度学习wiki
【hard way】(偏向概念解释,数学推导,基本原理):
两本经典中的经典书籍:第一本倾向于理论阐述,第二本则是倾向于直观解释。
2. Neural Networks and Deep Learning
第三本则是代码应用向的,使用Theano从零搭建各种常见的网络结构,虽然是Theano,但是基本思想是统一的。
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,不需要了解太多细节,应用向的可以直接看这个。
3. TFSlim,基于TensorFlow的高级API,和TensorFlow契合度更好。
4. Keras,高级API,后端可以使用TensorFlow(默认)
【hard way】(偏向理论性质,调用基本API手写,自定义layer,自定义kernel,自定义optimizer等):
- 官网教程,Get Start,Programmer’s guide,Tutorials,Performance过一遍。
- Google的Udacity课程
- Stanford的CS20SI课程
8. 论文阅读路线图【hard way】: github上有个很有名的Deep Learning papers reading roadmap,已经过万stars,从事深度学习科研者的必读清单,在我写的上一篇学习之路中,虽然整理了很多论文,但是过于杂乱,在此就不做引用啦。
9. 相关博客等其他资源:
- 先放上我的博客啦(笑)
- Beginner-level tutorials for a powerful framework
- CS231n: Convolutional Neural Networks for Visual Recognition
- CS224n: Natural Language Processing with Deep Learning
- UFLDL Tutorial
- UFLDL教程(上面UFLDL Tutorial旧版,但是是中文的)
- First Contact With TensorFlow
- Deep Learning
- Deep Learning For Coders-36 hours of lessons for free(一个不错的视频教程)
- colah’s blog(推荐,写了很多晦涩概念可视化的博客)
- DeepLearning4J(虽然是一个面向Java的深度学习框架,但是文档很好,通用性也很强)
- Chris McCormick · Machine Learning Tutorials and Insights(这个和下面的几个都是不错的博客,推荐关注)
- Daniil's blog
- Café, bonne nuit
- Hackery, Math & Design
10. 不错的资源类网站:
---------------------------------旧答案的分割线---------------------------------
已更新。
发一波预告~最近刚用tensorflow搞完一个算是接近实际并且带有移动端应用外加inception retrain的项目,打算考试结束更新一波~:)
TensorFlow已经发布1.0版本!
已更新。
近期更新计划:
1.重新整理Learning path,将各个部分更加详尽阐述,同时给出合适的快速入手教程。
2.及时跟进最新进展,删除陈旧信息。
我在blog中总结了学习路线,针对新手。
新手向的Tensorflow学习之路(Learning paths)
文中的教程或者blog以及论文书籍基本上都是经典,推荐入门学习。
贴在这里:
在学习Tensorflow的过程中磕磕碰碰,总结一些个人心得记录于此,志同道合之友共勉~~
1.稳定的网络:Tensorflow毕竟出自Google,官方文档访问不是很稳定。而且一般来说,对于英文的文档,资料和疑问,Google搜索的结果要比Baidu好很多。(不是偏见,是各有所长,天气地图电影啥的,百度还是做的很好的)
2.Github:这是个开源程序的网站,Linux内核就在这个网站托管。Github的核心是Git,一种版本控制系统,已经逐渐取代SVN。这个网站托管了很多高质量的或者说世界顶尖的开源项目,比如Tensorflow。学习一下这个网站如何使用,注册个账号,学习一下Git的使用方法。这个网站有自己的tutorial和guide。
3.Linux: Tensorflow的主要运行平台就是Linux,目前在Windows上运行的方案是虚拟机,但是深度学习对计算要求还是比较高的,虚拟机效率不是太高,因此还是推荐在原生Linux中运行。新手推荐发行版是Ubuntu 或者Linux mint。这个可以自行搜索。学习Linux也有很多好处,因为很多开源软件都only linux的。
4.Python:这是一种非常流行的脚本语言,庞大的第三方库可以快速写出短小容易理解的代码,而且也是Tensorflow的推荐开发语言。教程太多了,这里给几个优秀的教程:官网教程,Learn Python the Hard Way,Python2.7教程
5.深度学习(Deep Learning,DL):虽然Tensorflow已经封装好了大部分DL的细节,但是如果不了解DL的相关核心概念,就会很难着手分析问题。首先强烈推荐这个教程,通读一遍,然后还有这个,可以快速浏览或者只看自己不太明白的地方,还有这个分块介绍的,还有几篇blog,这个和这个讲的是卷积神经网络。图像识别用的比较多的就是卷积神经网络,这两篇可以看看。
6.Tensorflow:前面都是铺垫,是为了更好地使用Tensorflow。官方的文档不错,可以从get started然后tutorial看起,有个中文的翻译版,但是更新不及时(官方已经v1.0,这个可能是v0.8或者v0.7),可能有坑,可以和英文对照着看,还有个Tensorflow的教程,也不错。有篇FIRST CONTACT WITH TENSORFLOW也不错。
7.优秀博客:Hackery, Math & Design, Mike Bostock, http://colah.github.io/, Café, bonne nuit这几个都是我在学习中遇到的非常nice的blog,有时间读读定会有所收获。
8.经典论文及书籍:收集了一些DL的经典论文&书籍,有些杂乱,不过几乎都是经典,各取所需吧。百度云地址:(已删除,内容上有些陈旧了,并且百度云总是封杀链接)。各位有更好的欢迎推荐,我会整理上传。
9.几篇原创TF相关文章(持续更新):如何理解TensorFlow中的batch和minibatch,结合TensorFlow PlayGround的简单神经网络原理解释,TensorFlow从源码安装,利用TF重训练Google Inception模型,在Android端使用TensorFlow
其中,Python,DL,Tensorflow是重点,其他都是辅助, 自己感觉够用即可,无需深入。学习中遇到困难首先向搜索引擎询问。
2017.9.23 更新:更新部分链接以及资源描述
2017.7.31 更新:添加了一些推荐资源,序号重新排版,在首部重点推荐了几个教程,方便快速上手
2017.7.30 更新:修正一些排版问题,删除百度云链接,增加CS 20SI课程
2017.5.16 更新:更新失效的百度云地址
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 更新:重新排版
出处:https://www.zhihu.com/question/41667903
TensorFlow学习线路的更多相关文章
- Tensorflow学习笔记2:About Session, Graph, Operation and Tensor
简介 上一篇笔记:Tensorflow学习笔记1:Get Started 我们谈到Tensorflow是基于图(Graph)的计算系统.而图的节点则是由操作(Operation)来构成的,而图的各个节 ...
- JEE学习线路
传智播客:javaEE学习线路以及需要掌握的知识点:http://java.itcast.cn/subject/javastudypath/index.shtml 最近在学JavaEE,没学Java ...
- PHP 初学者的学习线路和建议【1】
先来看下PHP初学者的学习线路: (1) 熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作简单的网页,对元素属性相对熟悉. (2) 理解动态语言的概念和运做机制,熟悉基本的PHP语法. ( ...
- 用tensorflow学习贝叶斯个性化排序(BPR)
在贝叶斯个性化排序(BPR)算法小结中,我们对贝叶斯个性化排序(Bayesian Personalized Ranking, 以下简称BPR)的原理做了讨论,本文我们将从实践的角度来使用BPR做一个简 ...
- Tensorflow学习笔记2019.01.22
tensorflow学习笔记2 edit by Strangewx 2019.01.04 4.1 机器学习基础 4.1.1 一般结构: 初始化模型参数:通常随机赋值,简单模型赋值0 训练数据:一般打乱 ...
- Tensorflow学习笔记2019.01.03
tensorflow学习笔记: 3.2 Tensorflow中定义数据流图 张量知识矩阵的一个超集. 超集:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S ...
- HTML5标签汇总及知识学习线路总结
HTML5标签汇总,以及知识学习线路总结.
- TensorFlow学习笔记之--[compute_gradients和apply_gradients原理浅析]
I optimizer.minimize(loss, var_list) 我们都知道,TensorFlow为我们提供了丰富的优化函数,例如GradientDescentOptimizer.这个方法会自 ...
- TensorFlow学习路径【转】
作者:黄璞链接:https://www.zhihu.com/question/41667903/answer/109611087来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
随机推荐
- Confluence 6 更新目录
当编辑目录时候的限制 你不能对你用户属于的目录进行编辑,禁用或者删除.这个能够预防管理员通过修改目录的时候讲自己属于的管理员权限从系统管理员组中删除. 这个限制对所有的用户目录类型适用.例如: 如果当 ...
- pyculiarity 时间序列(异常流量)异常检测初探——感觉还可以,和Facebook的fbprophet本质上一样
demo: from pyculiarity import detect_ts import matplotlib.pyplot as plt import pandas as pd import m ...
- 深入理解$watch ,$apply 和 $digest --- 理解数据绑定过程——续
Angular什么时候不会自动为我们$apply呢? 这是Angular新手共同的痛处.为什么我的jQuery不会更新我绑定的东西呢?因为jQuery没有调用$apply,事件没有进入angular ...
- .NET 性能优化方法总结==转
.NET 性能优化方法总结 目录 目录 1. C#语言方面... 4 1.1 垃圾回收... 4 1.1.1 避免不必要的对象创建... 4 1.1.2 不要使用空析构函数 ★... 4 1.1.3 ...
- 有名管道mkfifo
int mkfifo(const char *pathname, mode_t mode); int mknod(const char *pathname, mode_t mode, dev_t de ...
- Vysor安装图解
Vysor安装图解 11 准备东西 路径 C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default ...
- JdbcTemplate.queryForObject
} catch (EmptyResultDataAccessException e) { log.info(">>>检测到有无记录>>>>" ...
- typedef struct用法详解与小结
1.基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字,这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等). 在编程中使用typedef ...
- DELPHI 5种运行程序的方法具体应用实例(带参数)
http://www.02t.cn/article/code/102.html https://msdn.microsoft.com/en-us/library/windows/desktop/ms6 ...
- 基于GUI的简单聊天室02
服务器端 与上一篇相比,加进了线程内部类,解决多个客户端连接时,服务器无法全部响应的问题. 利用List集合来装载客户端的对象. 还需要注意全局变量的应用. /** * 相比01,加进了线程内部类,解 ...