python机器学习-Python TensorFlow
本文是Python 机器学习系列的一部分。您可以在此处找到本系列之前所有帖子的链接
介绍
在上一章中,我们研究了 Python Seaborn、它的函数和它的 Python 实现。
在本章中,我们将从下一个非常有用且重要的 Python 机器学习库“Python Tensorflow”开始。
什么是 Python TensorFlow?
TensorFlow 是一个免费的开源软件库,用于跨一系列任务的数据流和可微编程。它是一个符号数学库,也用于机器学习应用程序,如神经网络。它用于谷歌的研究和生产。
其灵活的架构允许跨各种平台(CPU、GPU、TPU)轻松部署计算,从台式机到服务器集群再到移动和边缘设备。
TensorFlow 计算表示为有状态数据流图。TensorFlow 的名称源自此类神经网络对多维数据数组执行的操作,称为tensors。在 2016 年 6 月的 Google I/O 大会上,Jeff Dean 表示 GitHub 上有 1500 个存储库提到了 TensorFlow,其中只有 5 个来自 Google。
2018 年 1 月,谷歌发布了 TensorFlow 2.0。2018 年 3 月,谷歌发布了用于 JavaScript 机器学习的 TensorFlow.js 1.0 版和用于计算机图形学深度学习的 TensorFlow Graphics。
TensorFlow 由 Google Brain 团队开发,供 Google 内部使用。它于 2015 年 11 月 9 日在 Apache License 2.0 下发布。官方网站是www.tensorflow.org。
关键术语
Tensor
Tensorflow 的名字直接来源于它的核心框架:Tensor。在 Tensorflow 中,所有计算都涉及tensors。tensor 是表示所有类型数据的 n 维向量或矩阵。张量中的所有值都具有相同的数据类型,并且具有已知(或部分已知)的形状。数据的形状是矩阵或数组的维数。
tensor 可以源自输入数据或计算结果。在 TensorFlow 中,所有操作都在一个图中进行。图是一组连续发生的计算。每个操作称为一个操作节点,并相互连接。
该图概述了节点之间的操作和连接。但是,它不显示值。tensor 中节点的边缘,即一种用数据填充操作的方法。
Graphs
TensorFlow 使用图框架。graph 收集并描述了训练期间完成的所有系列计算。graph 有很多优点:
- 它是为了在多个 CPU 或 GPU 甚至移动操作系统上运行而完成的
- graph 的可移植性允许保留计算以供立即或以后使用。可以保存图形以供将来执行。
- graph 中的所有计算都是通过将tensor 连接在一起来完成的。
- tensor 有一个节点和一条边。节点承载数学运算并产生端点输出。边解释了节点之间的输入/输出关系。
尝试阅读graph ,以便更好地理解TensorFlow并对概念有深刻的理解
DistBelief
从 2011 年开始,Google Brain 将 DistBelief 构建为基于深度学习神经网络的专有机器学习系统。在研究和商业应用中,它在不同的 Alphabet 公司中的使用迅速增长。Google 指派了包括 Jeff Dean 在内的多位计算机科学家来简化和重构 DistBelief 的代码库,使其成为一个更快、更强大的应用级库,即 TensorFlow。2009 年,由 Geoffrey Hinton 领导的团队实施了广义反向传播和其他改进,使生成的神经网络具有更高的准确度,例如,语音识别错误减少了 25%。
CPU
中央处理单元简称CPU,是电子电路,作为计算机的大脑,执行计算机程序指令指定的基本算术、逻辑、控制和输入/输出操作。
GPU
GPU,图形处理单元是一种专门的电子电路,旨在与 CPU 一起渲染 2D 和 3D 图形。GPU 在游戏玩家文化中也被称为显卡。现在,GPU 正被更广泛地用于加速金融建模、前沿科学研究、深度学习、分析以及石油和天然气勘探等领域的计算工作负载。
TPU
2016 年 5 月,谷歌发布了其张量处理单元 (TPU),这是一种专用集成电路(一种硬件芯片),专为机器学习构建并为 TensorFlow 量身定制。TPU 是一种可编程 AI 加速器,旨在提供低精度算术(例如 8 位)的高吞吐量,并且面向使用或运行模型而不是训练模型。谷歌宣布他们已经在数据中心内运行 TPU 一年多,并发现它们为机器学习提供了一个数量级的每瓦特优化性能。
2017 年 5 月,谷歌宣布了第二代,以及谷歌计算引擎上 TPU 的可用性。第二代 TPU 可提供高达 180 teraflops 的性能,当组织成 64 个 TPU 的集群时,可提供高达 11.5 petaflops。
2018 年 5 月,谷歌宣布推出第三代 TPU,可提供高达 420 teraflops 的性能和 128 GB HBM。Cloud TPU v3 Pod 提供 100+ petaflops 的性能和 32 TB HBM。
Edge TPU
2018 年 7 月,Edge TPU 发布。Edge TPU 是 Google 的专用 ASIC 芯片,旨在在称为边缘计算的智能手机等小型客户端计算设备上运行 TensorFlow Lite 机器学习 (ML) 模型。
TensorFlow Lite
2017 年 5 月,谷歌发布了专门用于移动开发的软件堆栈 TensorFlow Lite。2019 年 1 月,TensorFlow 团队发布了移动 GPU 推理引擎的开发者预览版,Android 设备上有 OpenGL ES 3.1 Compute Shaders,iOS 设备上有 Metal Compute Shaders。2019 年 5 月,谷歌宣布其 TensorFlow Lite Micro(也称为 TensorFlow Lite for Microcontrollers)和 ARM 的 uTensor 将合并。
Pixel Visual Core (PVC)
2017 年 10 月,谷歌发布了谷歌 Pixel 2,它采用了他们的 Pixel Visual Core (PVC),一种用于移动设备的完全可编程的图像、视觉和 AI 处理器。PVC 支持用于机器学习的 TensorFlow(以及用于图像处理的 Halide)。
TensorFlow Session
session将从graph中执行操作。要使用tensor的值提供图表,您需要打开一个session。在session中,您必须运行操作符来创建输出。
Tensorflow 架构组件
1. TensorFlow Servables
这些是 TensorFlow Serving 的核心基本单元。TensorFlow Servables 是客户端用来执行计算的对象。
servable 的大小是灵活的。单个 servable 可能包括从查找表到单个模型再到推理模型元组的任何内容。Servables 可以是任何类型和接口,从而实现灵活性和未来的改进,例如:
- Streaming results
- Experimental APIs
- Asynchronous modes of operation
2. TensorFlow 可服务版本
TensorFlow Serving 可以在单个服务器实例的生命周期内处理一个或多个版本的 servable。这为随着时间的推移加载新的算法配置、权重和其他数据打开了大门。它们还支持同时加载多个版本的 servable,支持逐步推出和试验。在服务时,客户端可以请求特定模型的最新版本或特定版本 ID。
3. TensorFlow 可服务流
按版本号递增的可服务版本的一系列版本。
4. TensorFlow 模型
Serving 将模型表示为一个或多个 servable。机器学习模型可能包括一种或多种算法(包括学习权重)以及查找或嵌入表。servable 也可以作为模型的一部分,例如,一个大的查找表可以作为许多实例。
5. TensorFlow 加载器
加载器管理 servable 的生命周期。Loader API 支持独立于特定学习算法、数据或产品用例的通用基础设施。具体来说,Loaders 标准化了用于加载和卸载 servable 的 API。
6. Tensorflow 架构中的来源
简单来说,源是查找和提供可服务的模块。每个源提供零个或多个可服务的流。对于每个可服务流,Source 为每个可供加载的版本提供一个 Loader 实例。
7. TensorFlow 管理器
Tensorflow 管理器处理 Servables 的整个生命周期,包括:
- 加载 Servables
- 服务 Servables
- 卸载 Servables
管理人员听取来源并跟踪所有版本。管理器尝试满足来源的请求,但可能会拒绝加载想要的版本。管理人员也可以推迟“卸载”。例如,基于确保始终加载至少一个版本的策略,管理器可能会等待卸载,直到较新的版本完成加载。例如,GetServableHandle(),用于客户端访问加载的可服务实例。
8. TensorFlow 核心
使用标准的 TensorFlow Serving API,TensorFlow Serving Core 管理可服务 的以下方面:
- 生命周期
- 指标
TensorFlow Serving Core 将 servables 和 loader 视为不透明对象。
9. TensorFlow 批处理器
将多个请求批处理为单个请求可以显着降低执行推理的成本,尤其是在 GPU 等硬件加速器存在的情况下。TensorFlow Serving 包含一个请求批处理小部件,可让客户端轻松地将跨请求的特定于类型的推理批处理为算法系统可以更有效地处理的批处理请求。
TensorFlow Servable 的生命周期
安装 Python Tensorflow
1. Ubuntu/Linux
sudo apt update -y
sudo apt upgrade -y
sudo apt install python3-tk python3-pip -y
pip install tensorflow # Python 2.7; CPU support (no GPU support)
pip3 install tensorflow # Python 3.n; CPU support (no GPU support)
pip install tensorflow-gpu # Python 2.7; GPU support
pip3 install tensorflow-gpu # Python 3.n; GPU support
如果上述命令失败,则可能您使用的是旧二进制文件来运行以下命令
docker pull tensorflow/tensorflow # latest stable release
docker pull tensorflow/tensorflow:devel-gpu # nightly dev release w/ GPU support
docker pull tensorflow/tensorflow:latest-gpu-jupyter # latest release w/ GPU support and Jupyter
要运行 TensorFlow Docker 映像,请执行以下命令
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!