1.1 TensorFlow是什么
TensorFlow(TF)是一个功能强大的开源软件库,它由Google的布莱恩(Brain)团队开发,主要用于深度神经网络。它自2015年11月使用Apache 2.0开源协议首次发布后飞速发展,截至2019年5月,它在Github的项目仓库(https://github.com/tensor-flow/tensorflow
)上已经有超过51 000条提交,大约1830个贡献者。这些数据说明了它自身的流行度。
我们先来看看TensorFlow到底是什么,以及它为何在众多深度神经网络研究人员和工程师中如此流行。Google称它为“机器智能的开源软件库”,但随着很多深度学习库的出现,比如PyTorch(https://pytorch.org/
)、Caffe(https://caffe.berkeleyvision.org/
)和MxNet(https://mxnet.apache.org/
),是什么使得TensorFlow仍然与众不同呢?大多数深度学习库(如TensorFlow)都有自动求导工具(一种用于优化的数学工具),许多是开源平台,其中大多数提供CPU/GPU选项,有预训练模型,支持常用的神经网络架构(比如循环神经网络、卷积神经网络和深度信念网络)。
除此之外,TensorFlow还有以下重要的功能:
- 它适用于所有流行的编程语言,比如,Python、C++、Java、R和Go。
- Keras作为高阶神经网络API集成到了TensorFlow中(自2.0开始,Keras成为与TensorFlow交互的标准API)。该API指定了软件组件间的交互方式。
- TensorFlow允许部署模型且易于在生产中使用。
- TensorFlow 2.0在基于静态图的图计算基础上,增加了动态计算(见第2章)。
- 最重要的是,TensorFlow拥有非常好的社区支持。
对于所有开源项目,Github上的五角星数量是衡量其流行度的重要途径(见图1-1)。截至2019年3月,TensorFlow、Keras和PyTorch的星数分别为123 000、39 100和25 800。可见,TensorFlow成了机器学习中最受欢迎的框架。
图1-1 Github上各种深度学习项目的星数
Google Trends(趋势)是另一种衡量流行度的途径,结果再次证明TensorFlow和Keras分列一二位(截至2019年底),而PyTorch紧随其后(见图1-2)。
图1-2 各种深度学习项目的Google Trends