Python+Tensorflow机器学习实战
上QQ阅读APP看书,第一时间看更新

1.3 TensorFlow简介

TensorFlow是谷歌公司推出的机器学习开源神器,是谷歌基于DistBelief进行研发的第二代人工智能学习系统。DistBelief是谷歌内部开发和使用的机器学习框架,但是它严重依赖于Google内部硬件,仅适用于开发神经网络算法等,因此难以广泛使用。谷歌在DistBelief的基础上,提高了运算效率、框架的灵活性和可移植性,形成了TensorFlow框架。目前,TensorFlow已被广泛用于文本处理、语音识别和图像识别等多项机器学习和深度学习领域。

1.3.1 主流框架的对比

在机器学习的开源框架中,Google(谷歌)、Microsoft(微软)、Facebook(脸书)和Amazon(亚马逊)等巨头都有着自己的机器学习框架并进行了一定程度的开源。此外,还有伯克利大学的贾扬清主导开发的Caffe、蒙特利尔大学Lisa Lab团队开发的Theano以及其他个人或商业组织贡献的框架。可以说,各种开源的深度学习框架层出不穷。

1.基本情况

TensorFlow是Google的可移植机器学习和神经网络库,可扩展性强。TensorFlow对Python有着良好的编程语言支持,支持CPU、GPU和Google TPU等硬件,并且已经拥有各种各样的模型和算法,在深度学习上有非常出色的表现。另外,TensorFlow由谷歌进行主导,在文档和实例方面也有着良好的支持。

MXNet是亚马逊的机器学习框架,具有较强的可移植性和可扩展性,对Python、R、Scala、Julia和C++等编程语言有着不同程度的支持。

Deeplearning4j(DL4J)是一个专注于深度神经网络的Java库,可以与Hadoop和其他基于Java的分布式框架集成。

Microsoft Cognitive Toolkit(CNTK)是微软的开源深度学习框架,支持Python编程语言,拥有各种各样的神经网络模型,并且支持强化学习、生成对抗网络等,是一个功能强大的工具。但是由于交流的社区小,在文档和实例方面的学习资料很少。

Caffe深度学习项目最初是一个用于解决图像分类问题的框架,后来逐步成长为一个强大的机器学习框架。但是由于其创始人现已离开项目,有一段时间已不再进行更新。该项目的下一步进展不明确,建议不再使用。

Torch是Facebook主推的机器学习框架,基于Lua语言进行开发,广泛支持各种机器学习模型和算法。但是由于Lua语言是机器学习中相对冷门的语言,因此增加了学习成本。

Theano由蒙特利尔大学机器学习研究所(MILA)创建。Theano支持Python语言,并且能够支持其他的深度学习框架。但因为它由研究机构开发,在API方面并不完善,若要写出效率高的Theano框架,需要对隐藏在框架背后的算法也相当熟悉,所以它只在研究中极为流行,但在项目开发方面难度相对较大。

Keras由Francis Chollet编写和维护,基于Python进行编写,能够运行在Theano或TensorFlow上,可以将它看成对Theano或TensorFlow的再一次封装。Keras由于水平高,对用户友好,因此能够更加便捷地编写卷积神经网络、递归神经网络等机器学习模型。目前,TensorFlow将Keras添加为TensorFlow核心中的高级框架,成为TensorFlow的默认API。

对于这些主要的机器学习框架,基本情况的对比如表1.1所示。

表1.1 各主流框架基本情况的对比

2.运行性能

在性能方面,对主流框架在AlexNet上单GPU的情况进行了性能评测参考https://github.com/soumith/convnet-benchmarks。,结果如表1.2所示。

表1.2 各主流框架的性能评测

可以看出,TensorFlow的性能已经处于领先水平。

3.受欢迎程度

主要的机器学习框架都在GitHub上进行了开源。截至2018年4月,流行的机器学习框架在GitHub上的情况如图1.1所示。

图1.1 主流机器学习框架受欢迎程度对比

从中可以看到,TensorFlow在Watch数量、Star数量、Fork数量等方面都完胜其他框架。

综合来说,TensorFlow本身在编程语言上对主流的Python进行支持,并且能够支持各种硬件平台,能够采用集中部署和分布式部署方式,能够部署在移动端、云端、服务器端等不同的应用环境中。最关键的是它由Google主导,Google强大的人工智能研发水平,让大家对Google的深度学习框架充满信心。而且Google丰富的项目经验,使得TensorFlow能够进行快速的迭代更新,Google的工程师和其他广大的开发者也能组织成活跃的社区,进行积极反馈,形成良性循环,可以说TensorFlow框架是我们进行机器学习的首选。

1.3.2 TensorFlow的发展

TensorFlow从2015年开源以来,不断地迭代更新,主要的更新版本如下。

2015年11月9日,Google在GitHub上开源了TensorFlow。

2016年4月13日,TensorFlow 0.8版本发布,支持分布式计算。

2016年4月29日,开发AlphaGo的DeepMind团队转向TensorFlow,增强了TensorFlow的力量。

2016年5月12日,开源基于TensorFlow的最准确语法解析器SyntaxNet。

2016年6月27日,TensorFlow 0.9版本发布,增强了移动设备支持。

2016年8月30日,TF-Slim库发布,可以更简单、快速地定义模型。

2017年2月15日,TensorFlow 1.0版本发布,提高了框架的速度和灵活性。

2017年8月17日,TensorFlow 1.3版本发布,将Estimate估算器加入框架。

2017年11月2日,TensorFlow 1.4版本发布,将Keras等高级库加入核心功能。

另外,TensorFlow具有出色的版本管理和细致的官方文档,活跃的社区也在不断促进TensorFlow的发展。

1.3.3 使用TensorFlow的公司

谷歌作为TensorFlow的主导公司,在自己的搜索、Gmail、翻译、地图和YouTube等产品中均使用了TensorFlow,这也是谷歌DeepMind人工智能项目的AlphaGo和AlphaGo Zero的底层技术。同时,国外的airbnb、ebay和Dropbox等公司也在尝试使用,国内的京东、小米等公司也在使用。图1.2摘自TensorFlow官网日益强大的公司墙。

图1.2 使用TensorFlow的公司