懒人阅读:想要傻瓜式体验深度学习的请先绕开TF,可以考虑pytorch、keras。想要真正从事可部署产品研发的童鞋,TF可能是一个绕不开的存在。
写在前面:引用并发挥大神们关于机器学习/深度学习/人工智能的话:
训练AI模型就是炼丹,金丹就是训练出来的模型,可以针对某种问题输出极佳的结果;框架是丹炉;丹方就是模型的设计思路、结构和方法;炼丹的材料就是数据。
炼丹过程就是按照丹方,使用框架和数据训练模型的过程,不同级别的“丹药”对于问题的解决程度不同,越厉害的丹药当然能够越精确高效的解决问题。
为什么要了解Tensorflow/span>
Tensorflow是目前唯一 一个在核心设计层面上支持dynamic control flow的框架,也是极少几个经历大规模多应用部署考验的的框架之一。谷歌一开始的野心从中也可看出一二,让人不禁联想到Android。TF目前处于快速迭代的过程中,虽然开源、资源多、维护活跃,但是也存在了各种文档、接口和版本混乱的问题,但相信谷歌在AI上的决心和行动,目前很多人已经开始在最底层的TF基础上开发更加易读易调试的高层封装模块了,从一个平台级软件的发展来看,目前的问题都将得到很好的解决。
优点
-
无缝对接Python,BUT大多数深度学习框架都可以
-
能够很容易部署到服务器上和移动端,这是很多框架做不到的
-
足够灵活,非常底层,也有上层封装,尤其是更新很快, 区非常活跃,这当然离不开谷歌的大力推动,不禁联想到Android
-
大量优秀的项目正在使用TensorFlow
-
可以在多个CPU和GPU下并行
人无完人,缺点
-
官方文档及API文档残废,普遍反应逻辑不亲民,稍显混乱
-
据说默认占用所有GPU的所有内存,显存占用也不低,对硬件要求不低
-
版本乱、版本之间的兼容性问题大
-
由于偏底层,接口编写难度大,调试也困难
如果认可上一条,请继续阅读Tensorflow简介
TensorFlow主要是由Google Brain团队开发用于机器学习和深度神经 络研究开发,是一个使用数据流和图来做数值计算的开源软件平台,可广泛应用于各个领域的开发部署。
TF使用graph表示计算流程。图中的节点称为操作(Operation,以下简称OP)。每个OP接受0到多个Tensor,执行计算,输出0到多个Tensor。图是对计算流程的描述,需要在Session中运行。Session将计算图的OP分配到CPU或GPU等计算单元,并提供相关的计算方法,并且会返回OP的结果。
看到这里可能有些人会懵,简单说就是用画图的方式设计算法结构及流程,然后明确各个模块的计算方法,然后数据就会按照设计的方式一步步流动,直至输出结果。就像设计了一种结构的管道,数据就像液体一样在管道中流动,最终以一种形式输出。
TF的几个要素:
张量(Tensor)
TF使用Tensor表示所有数据, 计算图中, 操作间传递的数据都是 tensor。
变量(Variable)
在训练模型时,Variable被用来存储和更新参数。变量维护图执行过程中的状态信息。
Feed
TensorFlow除了可以使用Variable和Constant引入数据外,还提供了Feed机制实现从外部导入数据。
Fetch
为了取回操作的输出内容, 可以在使用 Session 对象的 run() 调用 执行图时, 传入一些 tensor, 这些 tensor 会帮助你取回结果。
使用方法及示例
TF程序实现主要有两个过程:图的构建和图的执行。
-
图的构建
构建图的第一步,是创建源OP(source op),源操作不需要任何输入,例如常量(constant),源操作的输出被传递给其它操作做运算。TensorFlow Python库有一个默认图 (default graph),OP构造器可以为其增加节点。这个默认图对许多程序来说已经足够用了。
-
图的执行
要执行计算图,首先需要创建Session对象,如果不提供参数,Session构造器将运行默认图。Session结束后,需要关闭以释放资源。用户也可以使用with控制语句自动关闭会话。
-
示例
TF实现CNN的一个栗子,用TF构建一个识别手写数字的CNN 络。
CNN基本结构
识别手写体,模型输入
输出,即对手写数字的识别结果,基本均能准确判断。
代码及详细说明传送门:https://github.com/aymericdamien/TensorFlow-Examples/blob/master/notebooks/3_NeuralNetworks/convolutional_network.ipynb
安装及注意事项
TF的安装有Pip, Docker, Virtualenv, Anaconda 或 源码编译等多种方法。具体参见极客学院的安装详细说明(含下载地址),传送门:http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/os_setup.html
授人以渔,资源分享及参考资料
-
莫烦系列之Tensorflow课程分享,非常靠谱,亲测顶推:http://list.youku.com/albumlist/show/id_27327189.htmlpm=a2h0j.8191423.Drama.5~5~H3~A
-
知乎神帖,解答你关于TensorFlow 如何入门需要知道的一切,传送门:https://www.zhihu.com/question/49909565
-
英文官方文档:https://www.tensorflow.org/versions/master/tutorials/index.html
-
极客学院的中文文档:TensorFlow官方文档中文版_TensorFlow中文教程_TensorFlow开发中文手册[PDF]下载
-
斯坦福新开的课程,cs20si,http://web.stanford.edu/class/cs20si/index.html,国内可以看b站的视频,CS 20SI: Tensorflow for Deep Learning Research
-
最后分享一篇对比目前各个主流深度学习框架的文章,很不错:对比深度学习十大框架:TensorFlow 并非最好送门:https://www.oschina.net/news/80593/deep-learning-frameworks-a-review-before-finishing-2016
善用智能之道:行业动态、技术前沿、产业服务, 联系:九三智能控
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!