概述
TensorFlow是一个用于机器学习和人工智能的软件库。它可以用于一系列任务,但主要用于神经网络的训练和推理。它是继PyTorch等框架之后最流行的深度学习框架之一。TensorFlow是免费开源软件,根据Apache License 2.0发布。
历史
DistBelief
从2011年开始,Google Brain构建了DistBelief,这是一个基于深度神经网络的专有机器学习系统。它在Alphabet旗下的各类公司中,于研究和商业应用领域的使用迅速增长。Google指派了包括Jeff Dean在内的多位计算机科学家,以简化和重构DistBelief的代码库,使其成为一个更快、更稳健的应用级库,这就是TensorFlow。2009年,由Geoffrey Hinton领导的团队实现了广义反向传播及其他改进,这使得生成的神经网络具有显著更高的准确性,例如在语音识别中错误率降低了25%。
TensorFlow
TensorFlow是Google Brain的第二代系统。1.0.0版本于2017年2月11日发布。虽然参考实现运行在单台设备上,但TensorFlow可以在多个CPU和GPU上运行(可选配CUDA和SYCL扩展,用于图形处理单元上的通用计算)。TensorFlow可用于64位Linux、macOS、Windows以及包括Android和iOS在内的移动计算平台。其灵活的架构允许在各种平台(CPU、GPU、TPU)上轻松部署计算,从台式机到服务器集群,再到移动和边缘设备。TensorFlow计算表示为有状态的数据流图。TensorFlow这个名称源于此类神经网络对多维数据数组(称为张量)执行的操作。在2016年6月的Google I/O大会上,Jeff Dean表示GitHub上有1,500个仓库提到了TensorFlow,其中只有5个来自Google。2018年3月,Google宣布推出TensorFlow.js 1.0版本,用于JavaScript中的机器学习。2019年1月,Google宣布了TensorFlow 2.0,并于2019年9月正式可用。2019年5月,Google宣布推出TensorFlow Graphics,用于计算机图形学中的深度学习。
张量处理单元(TPU)
2016年5月,Google宣布了其张量处理单元(TPU),这是一种专为机器学习构建并针对TensorFlow定制的专用集成电路(ASIC)。TPU是一种可编程AI加速器,旨在提供高吞吐量的低精度算术运算(例如8位),并面向使用或运行模型而非训练模型。Google宣布他们已在数据中心内运行TPU超过一年,并发现它们在机器学习方面每瓦特性能优化了一个数量级。2017年5月,Google宣布了第二代TPU,以及它们在Google Compute Engine中的可用性。第二代TPU提供高达180 teraflops的性能,当组织成64个TPU的集群时,可提供高达11.5 petaflops的性能。2018年5月,Google宣布了第三代TPU,提供高达420 teraflops的性能和128 GB高带宽内存(HBM)。Cloud TPU v3 Pods提供100+ petaflops的性能和32 TB HBM。2018年2月,Google宣布在Google Cloud Platform上以测试版形式提供TPU。
Edge TPU
2018年7月,Edge TPU被宣布。Edge TPU是Google专门构建的ASIC芯片,旨在在小型客户端计算设备(如智能手机)上运行TensorFlow Lite机器学习模型,这被称为边缘计算。
TensorFlow Lite
2017年5月,Google宣布TensorFlow Lite作为支持移动和嵌入式设备机器学习模型的软件栈,并于2017年11月提供了开发者预览版。2019年1月,TensorFlow团队发布了移动GPU推理引擎的开发者预览版,支持Android设备上的OpenGL ES 3.1 Compute Shaders和iOS设备上的Metal Compute Shaders。2019年5月,Google宣布其TensorFlow Lite Micro(也称为TensorFlow Lite for Microcontrollers)将与ARM的uTensor合并。它于2024年更名为LiteRT。
TensorFlow 2.0
随着TensorFlow在研究论文中的市场份额因PyTorch而下降,TensorFlow团队于2019年9月宣布发布该库的新主版本。TensorFlow 2.0引入了许多更改,其中最显著的是TensorFlow eager,它将自动微分方案从静态计算图更改为“Define-by-Run”方案,该方案最初由Chainer推广,后来被PyTorch采用。其他主要更改包括移除旧库、不同版本TensorFlow训练模型之间的交叉兼容性,以及GPU性能的显著提升。
特性
自动微分
自动微分是自动计算模型相对于其参数的梯度向量的过程。它允许高效地计算梯度,这对训练神经网络至关重要。TensorFlow的自动微分功能支持静态计算图和动态计算图,为用户提供了灵活性和易用性。
指标
TensorFlow包含一个指标模块,提供评估模型性能的函数,例如准确率、精确率、召回率和ROC曲线下面积。这些指标通常用于监控训练和验证进度。
优化器
TensorFlow提供多种优化器来在训练期间更新模型参数,包括随机梯度下降(SGD)、Adam、RMSProp和Adagrad。这些优化器实现不同的更新规则,以高效地最小化损失函数。
Keras
TensorFlow与Keras集成,Keras是一个高级神经网络API,简化了模型构建和训练。Keras为定义层、模型和训练循环提供了用户友好的界面,使初学者和专家都能轻松使用。
TensorBoard
TensorBoard是TensorFlow附带的可视化工具,允许用户监控训练指标、可视化模型图并检查嵌入。它有助于调试和理解模型行为。
TensorFlow Serving
TensorFlow Serving是一个灵活、高性能的机器学习模型服务系统,专为生产环境设计。它支持模型版本管理、滚动发布,并可同时处理多个模型。
TensorFlow Hub
TensorFlow Hub是一个用于可重用机器学习模块的库。它允许用户共享和发现预训练模型组件,促进迁移学习,并减少从头训练模型的需求。
TensorFlow Extended(TFX)
TensorFlow Extended(TFX)是一个用于部署生产ML管道的端到端平台。它包括数据验证、预处理、训练和服务组件,支持可扩展且可靠的ML工作流。
应用
TensorFlow被广泛应用于各种应用,包括图像识别、自然语言处理、语音识别和推荐系统。它还用于研究和工业中的任务,如目标检测、情感分析和生成建模。其灵活性和可扩展性使其适用于实验和大规模部署。
参见
参考文献
- TensorFlow官方文档
- 维基百科:TensorFlow
- Google AI博客
- TensorFlow发布说明