《白话深度学习与TensorFlow》——3.4 如何选择好的框架

3.4 如何选择好的框架

作为计算模型来说,深度学习中的绝大部分基本理论早已沉淀成了固化的计算模块、函数或者算法包。就计算模型本身来说,框架之间的差别不会太大,也不可能太大,除非这个领域的理论层面得到了极大的突破,而且这个突破还是不同方向且掌握在个别组织手里的。而现在框架之间的差别主要出现在这几个地方。
第一,性能方面。
这一属性主要由底层的实现语言决定,底层运行比较快的仍旧是实现的语言。理论上说,运行速度最快的仍旧是C或C++一类,离着CPU指令近一些语言效率高一些。
笔者用过Torch、TensorFlow、Chainer、Caffe等多种框架,虽然没有经过系统地压测和对比以及时下流行的跑分测试,但仍然有个比较感性的感觉——相同情况下Torch运行的速度略快一些,而TensorFlow老实说确实不能算快的甚至是这几款里面比较慢的。不过笔者从来不觉得这是什么大问题,这种效率的差距仅仅是零点几倍或者一点几倍,而真正在工程实现方面的差距大多来自样本数量、网络设计等方面,这些方面的差距可能都是一两个数量级的(差10倍或者100倍),所以这种效率不是最重要的参考标志。
第二,社区活跃度。
这些开源的项目虽然多,但是社区活跃与否是个非常重要的因素,甚至几乎是首选的因素。活跃的社区意味着有更多的人正在使用这样一个项目,会有更多的人贡献代码,提交Bug,遇到错误你也很容易找到前人踩坑留下的垫坑石。因而做起项目来风险也相对比较小,学习起来进步也会快一些。
第三,语言。
这几乎是最不重要的一个方面,因为不管什么语言,实现的框架大多都会支持Python的“驱动”,或者我们称接口。当然也有很多比较执拗的框架只提供人家自己原生的接口,例如Torch只支持Lua脚本,CNTK只支持C++等。
说它不重要是因为,在这样一个应用场景中网络建立的逻辑比较有限,所以涉及的语法内容也非常有限,学习成本也不高,反正从逻辑和模型层面是没有差别的。
应该说TensorFlow在这些方面做得还都是令人满意的。首先它有着非常活跃的社区:www.tensorflow.org,主页的日均PV有40到50万之多。这对于一个小众化的技术网站已经是个不得了的数字了。

它的英文社区比中文社区活跃得多,而且在Stackoverflow上的问题讨论也非常多,目前有8000多个被跟帖的帖子,每天都会有不少新帖出来,所以在成功的路上你不会孤单。

语言嘛,Python肯定是首选,笔者大多是使用Python 2.7+ TensorFlow的方式来工作的,很方便。
性能就像我刚才所说的,虽然感觉上并不快,但是满足目前的工作已经足够了。而且这种数量级的效率提升是无法通过更换一个框架来实现的。
总体来说TensorFlow应该是所有深度学习框架中比较适合用来进行工程应用的。

时间: 2024-08-31 22:52:33

《白话深度学习与TensorFlow》——3.4 如何选择好的框架的相关文章

《白话深度学习与TensorFlow》——3.2 与其他框架的对比

3.2 与其他框架的对比 1)?TensorFlow:深度学习最流行的库之一,是谷歌在深刻总结了其前身 DistBelief 的经验教训上形成的:它不仅便携.高效.可扩展,还能在不同计算机上运行:小到智能手机,大到计算机集群:它是一款轻量级的软件,可以立刻生成你的训练模型,也能重新实现它:TensorFlow有强大的社区.企业支持,因此它广泛用于从个人到企业.从初创公司到大公司等不同群体. 2)?Caffe:卷积神经网络框架,专注于卷积神经网络和图像处理,是用C++语言写成 的,执行速度非常快.

《白话深度学习与TensorFlow》——第3章 3.0TensorFlow框架特性与安装

第3章 3.0TensorFlow框架特性与安装 随着深度学习技术的逐步兴起,世界范围内支持深度学习的框架也如雨后春笋.那些各大学实验室制作出来的不出名的小项目就不必提了,单说现在在业界使用比较普遍的框架就有TensorFlow.Caffe.Theano.Torch等不下十种.我们在这本书中选用TensorFlow是因为笔者认为TensorFlow作为谷歌重要的开源项目,其未来的社区热度应该是容易保证的.而一个火热的社区对于推动一个开源项目发展有着至关重要的作用,它能让项目有旺盛的生命力且在生命

《白话深度学习与TensorFlow》——3.3 其他特点

3.3 其他特点 TensorFlow有很多的特点,当然这些特点不见得都是独一无二的. 1 .多环境与集群支持 首先,TensorFlow支持在PC的CPU环境.GPU环境甚至是安卓环境中运行.它不仅可以支持在单个计算单元(一颗CPU的多核心或一颗GPU的多核心)上进行运算,也支持一台机器上多个CPU或多个GPU上并行计算. 2016年4月14日,Google发布了分布式TensorFlow,能够支持在几百台机器上并行训练.分布式的TensorFlow由高性能的gRPC库作为底层技术支持.Ten

《白话深度学习与TensorFlow》——导读

**前言**为什么要写这本书近些年来,伴随着计算机计算能力的不断升级,很多原来只有在科幻电影里才有的桥段越来越多地出现在我们身边了,并给了我们更多的想象空间与期待.在2016年,人工智能界最令人瞩目的事情莫过于谷歌的AlphaGo以4:1的悬殊比分轻松击败韩国著名九段围棋大师李世石.之后化名"Master"的AlphaGo更是一路大开杀戒,分别在对弈网站"弈城"和"腾讯围棋"登录,先后打败了柯洁九段.朴廷桓九段.陈耀烨九段以及创造日本大满贯传奇的

《白话深度学习与TensorFlow》——2.2 深度神经网络

2.2 深度神经网络 2016年3月,随着Google的AlphaGo以4∶1的悬殊比分战胜韩国的李世石九段,围棋--这一人类一直认为可以在长时间内轻松碾压AI的竞技领域已然无法固守,而深度学习(deep learning)这一象征着未来人工智能领域最重要.最核心的科技也越来越成为人们关注的焦点.这里所谓的深度学习实际指的是基于深度神经网络(deep neural networks,DNN)的学习,也就是深度人工神经网络所进行的学习过程,或称作Deep Learning.这个Deep指的是神经网

《白话深度学习与TensorFlow》——第1章 1.0机器学习是什么

第1章 1.0机器学习是什么 机器学习是一个跟"大数据"一样近几年格外火的词汇.我们在了解深度学习之前,还是有必要了解和认识机器学习这个词的.机器学习究竟是一个什么过程或者行为呢? 机器学习--我们先想想人类学习的目的是什么?是掌握知识.掌握能力.掌握技巧,最终能够进行比较复杂或者高要求的工作.那么类比一下机器,我们让机器学习,不管学习什么,最终目的都是让它独立或至少半独立地进行相对复杂或者高要求的工作.我们在这里提到的机器学习更多是让机器帮助人类做一些大规模的数据识别.分拣.规律总结

《白话深度学习与TensorFlow》——第2章 深度学习是什么 2.1 神经网络是什么

第2章 深度学习是什么 2.1 神经网络是什么 要说深度学习(deep learning),就必须先说神经网络,或者称人工神经网络(artificial neural network,ANN).神经网络是一种人类由于受到生物神经细胞结构启发而研究出的一种算法体系. 人的神经细胞就像图上这样,枝枝杈杈很多,远远看上去一边比较粗大一边比较纤细.最上端粗大的这一边就是细胞体的所在,细胞体上有一些小枝杈叫做树突,细长的这一条像尾巴一样的东西叫做轴突.不同细胞之间通过树突和轴突相互传递信息,它们的接触点叫

《白话深度学习与TensorFlow》——2.4 深度学习应用

2.4 深度学习应用 我们在第1章所介绍过的谷歌无人驾驶汽车仅仅是深度学习的一个典型应用,深度学习的应用领域越来越多,而且是几乎在任何一个产业中都有其落地的身影.我们先来看几个有趣的应用.2.4.1 围棋机器人--AlphaGo 击败李世石的谷歌AlphaGo就不用说了,它已经进入我们的视线很久了. 它由谷歌旗下DeepMind公司的戴维·西尔弗(David Silver).艾佳·黄和戴密斯·哈萨比斯(Demis Hassabis)与他们的团队开发,这个程序利用价值网络(value networ

《白话深度学习与TensorFlow》——1.3 分类

1.3 分类 分类是机器学习中使用的最多的一大类算法,我们通常也喜欢把分类算法叫做"分类器".这个说法其实也非常形象,在我们看来,这就是一个黑盒子,有个入口,有个出口.我们在入口丢进去一个"样本",在出口期望得到一个分类的"标签".比如,一个分类器可以进行图片内容的分类标签,我们在"入口"丢进去一张老虎的照片,在"出口"得到"老虎"这样一个描述标签:而当我们在"入口"