TensorFlow 简介

TensorFlow 是一个基于Python 的免费开源机器学习平台,主要由谷歌开发。与NumPy 类似,
TensorFlow 的主要目的是让工程师和研究人员能够在数值张量上操作数学表达式。但TensorFlow
的能力远远超过NumPy,主要表现在以下几方面。

TensorFlow 可以自动计算任意可微表达式的梯度(正如第 2 章所示),这使其非常适合
做机器学习。

  • TensorFlow 不仅可以在 CPU 上运行,还可以在 GPU、TPU 等高度并行的硬件加速器上
    运行。
  • TensorFlow 定义的计算,很容易在多台机器上分布式进行。
  • TensorFlow 程序可以导出到其他运行时环境,比如 C++、JavaScript(用于基于浏览器的
    应用程序)、TensorFlow Lite(用于移动设备或嵌入式设备上运行的应用程序)等。这使
    得TensorFlow 应用程序很容易部署到实际环境中。

请一定要记住,TensorFlow 不仅仅是一个库。它其实是一个平台,拥有庞大的组件生
态系统,其中一些由谷歌开发,另一些由第三方开发。这些组件包括用于强化学习研究的TFAgents,
用于工业级机器学习工作流程管理的TFX,用于生产部署的TensorFlow Serving,以及包含许多预训练模型的TensorFlow Hub 代码库。这些组件涵盖了非常广泛的使用案例,从前沿
研究到大规模生产应用都有涉及。

TensorFlow 的可扩展性非常好。举例来说,美国橡树岭国家实验室的科学家用它在IBM
Summit 超级计算机的27 000 块GPU 上,训练了一个1.1 exaFLOPS 的极端天气预报模型。同
样,谷歌使用TensorFlow 开发了计算量非常大的深度学习应用程序,比如下国际象棋和围棋的
人工智能AlphaZero。如果有预算,那么你可以在谷歌云或亚马逊云科技(AWS)上租一个小
型TPU pod 或大型GPU 集群,将你自己的模型扩展到10 petaFLOPS 左右。这大约是2019 年顶
级超级计算机峰值计算能力的1% !

Keras 简介

Keras 是一个用Python 编写的深度学习API,它构建于TensorFlow 之上,可以方便地定义
和训练任意类型的深度学习模型。Keras 最初是为研究而开发的,其目的是快速进行深度学习
实验。

通过TensorFlow,Keras 可以在不同类型的硬件上运行(见图3-1),包括GPU、TPU 和普
通CPU,还可以无缝扩展到上千台机器上。

Keras 与TensorFlow:TensorFlow 是一个底层的张量计算平台,
Keras 则是一个高阶深度学习API

Keras 以重视开发者体验而闻名,它是为人类设计的API,而非为机器设计。它遵循减少认
知负荷的最佳实践:提供一致且简单的工作流程,尽量减少常见用例所需要的操作,并在用户
出错时提供清晰且可操作的反馈。因此,Keras 既可以让初学者轻松上手学习,也可以让专家大
大提高工作效率。

截至2021 年底,Keras 用户已超100 万人,既包括初创公司和大公司的学术研究人员、工
程师和数据科学家,也包括研究生和业余爱好者。谷歌、Netflix、Uber、欧洲核子研究中心
(CERN)、美国国家航空航天局(NASA)、Yelp、Instacart、Square 以及上百家初创公司都在
使用Keras 解决各行各业的诸多问题。YouTube 推荐是Keras 模型生成的。Waymo 自动驾驶汽
车是用Keras 模型开发的。在机器学习竞赛网站Kaggle 上,Keras 也是一个热门框架,大多数
深度学习竞赛的优胜者用的是Keras。

Keras 拥有庞大且多样化的用户群体,它不会强迫你采用唯一“正确”的方法来构建和训练
模型。相反,它支持各种不同的工作流程,从顶层到底层都支持,对应于不同的用户配置文件。
例如,构建模型和训练模型都有很多种方法,每种方法都代表可用性和灵活性之间的某种折中。
第5 章将详细介绍这些工作流程。你可以像使用scikit-learn 那样使用Keras,只需调用fit(),
剩下的工作交给框架来完成;你也可以像使用NumPy 那样使用Keras,完全掌控每一个小细节。

等你成为专家,你现在入门学习的所有内容仍然都会有价值。你可以轻松入门,然后逐渐
深入到工作流程中,从头开始编写越来越多的逻辑。无论是从学生成长为研究人员,还是从数
据科学家转为深度学习工程师,你都无须切换到另一个完全不同的框架。

这种哲学理念与Python 语言本身的哲学理念并无二致。有些语言只提供一种编程方法,
比如面向对象编程或函数式编程。与此相反,Python 是一门多范式语言,它提供了多种使用
模式,不同模式之间可以很好地协同工作。这使得Python 适用于不同的使用场景:系统管理、
数据科学、机器学习工程、Web 开发,或仅学习如何编程。同样,你可以将Keras 看作深度
学习领域的Python:它是一种对用户友好的深度学习语言,为不同的用户配置文件提供了多种
工作流程。

Keras 和TensorFlow 简史

Keras 的出现比TensorFlow 早8 个月。Keras 发布于2015 年3 月,而TensorFlow 发布于
2015 年11 月。你可能会问,如果Keras 是构建在TensorFlow 之上的,那么它怎么可能在
TensorFlow 发布之前就存在呢? Keras 最初是构建在Theano 之上的。Theano 是另一个提供自动
微分和GPU 支持的张量操作库,它是同类型的库中最早出现的。Theano 由蒙特利尔大学的蒙
特利尔学习算法研究所(MILA)开发,在许多方面是TensorFlow 的先驱。它开创了这一想法:
使用静态计算图进行自动微分并将代码编译到CPU 和GPU。

2015 年底TensorFlow 发布后,Keras 被重构为多后端架构,它可以与Theano 或TensorFlow
一起使用,在二者之间的切换就像更改环境变量一样简单。到2016 年9 月,TensorFlow 已经
达到了一定的技术成熟度,成为Keras 的默认后端选项。2017 年,Keras 又增加了两个新的后
端选项:CNTK(由微软开发)和MXNet(由亚马逊开发)。如今,Theano 和CNTK 都已停止
开发,MXNet 在亚马逊之外也没有得到广泛使用。Keras 再次成为单一后端的API,即构建在
TensorFlow 之上。

Keras 和TensorFlow 多年来一直保持共生关系。2016 年~ 2017 年,Keras 提供了一种对用
户友好的方式来开发TensorFlow 应用程序,并由此而闻名,吸引众多新用户加入TensorFlow 生
态系统。到2017 年底,大多数TensorFlow 用户通过Keras 来使用TensorFlow 或将二者结合使
用。2018 年,TensorFlow 领导层选择Keras 作为官方的TensorFlow 上层API。因此,在2019 年
9 月发布的TensorFlow 2.0 中,Keras API 处于核心地位。TensorFlow 2.0 对TensorFlow 和Keras
做了大量重新设计,其中考虑了4 年多时间的用户反馈和技术进步。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐