1.4 什么是TensorFlow
TensorFlow是一个用来创建和使用机器学习模型的开源平台。它实现了众多机器学习所需的常用算法和模式,帮你避免学习所有潜在的数学和逻辑,以便你只需关注需要解决的问题。它的受众包括业余爱好者、专业开发者,以及推动人工智能前沿发展的研究者。最重要的是,它同样支持在互联网、云端、移动端和嵌入式系统中部署模型。在本书中,我们将会讨论每一个场景。
TensorFlow的高级架构如图1-11所示。
图1-11:TensorFlow的高级架构
创建机器学习模型的过程叫作训练。这里计算机使用一些算法来学习输入数据以及如何区分它们。例如,如果你想让一个计算机来识别猫和狗,则可以使用大量的猫狗照片来创建一个模型,然后计算机会使用这个模型来分辨猫应该是什么样的以及狗应该是什么样的。当模型训练完成之后,用它来识别或者分类未来的输入数据的过程叫作推理。
因此,为了训练模型,有几件事情是你需要支持的。首先是一组设计模型本身的API。利用TensorFlow,这里有三种主要方法可以实现:手写所有的代码,这样你可以了解计算机是如何学习的,并用代码实现(不推荐);使用内置的estimators,这是已经实现好的神经网络,你可以定制它;使用Keras,这是一个高级的API,可以让你将常用的机器学习范例封装在代码中。在创建模型时,本书将主要关注于使用Keras API。
训练模型的方法有许多。对于大部分情况,你可能只需要一个单独的芯片,例如中央处理器(CPU)、图形处理器(GPU)或者新出现的张量处理器(TPU)。在更先进的工作和科研环境下,可能用到多芯片的并行训练,这利用了分布式逻辑将训练部署到多个芯片上。TensorFlow同样支持这项功能。
任何模型的命脉是它的数据。就像之前讨论的那样,如果你想创建一个识别狗和猫的模型,则需要大量狗和猫的例子。但是如何管理这些例子呢?你会发现,随着时间的推移,这常常涉及比创建模型本身更多的代码。TensorFlow提供了API来简化这个流程,叫作TensorFlow Data Services。为了学习,它们包含众多预处理过的数据集,只需要一行代码你就可以使用它们。它们同样提供了一些工具来处理原始数据,以便让它更易使用。
除了创建模型,你还需要能够将这些模型送到使用者的手中。为此,TensorFlow提供了用于服务的API,你可以通过HTTP连接为云端或移动端的客户提供模型推理。对于在移动端或嵌入式系统上运行的模型,这里有TensorFlow Lite,它提供了工具来让模型推理运行在Android和iOS以及基于Linux的嵌入式系统(例如Raspberry Pi)中。TensorFlow Lite的一个分支名为TensorFlow Lite Micro(TFLM),它采用一个叫作TinyML的新兴概念提供在微处理器上的推理。最终,如果你想把模型提供给浏览器或者Node.js用户,TensorFlow.js提供了训练和运行模型的功能。
接下来,我将向你展示如何安装TensorFlow,这样你就可以开始用它来创建和使用ML模型。