TensorFlow简介
TensorFlow是由Tensor(张量)与Flow(数据流)组成的,名字的含义就是让数据流在张量里飞。
为了让TensorFlow可以支持不同的程序设计语言接口,并让TensorFlow程序可以在各种平台执行,所有的TensorFlow程序都是先建立“计算图”,这是张量运算和数据处理的流程。我们可以使用TensorFlow提供的模块以不同的程序设计语言建立计算图。TensorFlow提供的模块很强大,我们可以设计张量运算流程,并且构建各种深度学习或机器学习模型。建立计算图完成后,就可以在不同的平台上执行计算图。
计算图中,节点(Node)代表运算,边(Edge)代表张量的数据流。我们可以想象边就是管线,张量数据在管线中流动。经过节点运算后,转换为不同的张量数据。
TensorFlow程序设计模式
TensorFlow程序设计模式的核心是计算图,可以分为两部分:建立计算图、执行计算图。
- 建立计算图
使用TensorFlow提供的模块建立计算图,TensorFlow提供的模块非常强大,可以设计张量运算流程,并且构建各种深度学习或机器学习模型。
- 执行计算图
建立计算图后,就可以建立Session执行计算图了。在TensorFlow中,Session的作用是在客户端和执行设备之间建立连接。有了这个连接,就可以将计算图在各种不同设备中执行,后续任何与设备之间的数据传输都必须通过Session来进行,并且最后获得执行后的结果。
深度学习是以张量(矩阵)运算模拟神经网络的。所以TensorFlow的主要设计就是让矩阵运算达到最高性能,并且能在各种不同的平台执行。TensorFlow最初由Google的Brain Team团队开发,于2015年11月公开了源代码,在Apache 2.0与开放源代码规范下,所有开发者都可以免费使用。Google希望通过开源社区的分享建立一个庞大的社区,建立共同的标准,让TensorFlow更加完善。
TensorFlow架构
TensorFlow的系统结构以C API为界,将整个系统分为「前端」和「后端」两个子系统:
- 前端系统:提供编程模型,负责构造计算图;
- 后端系统:提供运行时环境,负责执行计算图。
TensorFlow架构图如下,
高级API | Keras、TF-Learn、TF-Slim、TF-Layer |
前端程序语言 | Python、C++ |
TensorFlow Distributed Execution Engine | |
平台 | Windows、Linux、Android、iOS、Raspberry Pi |
处理器 | CPU、GPU、TPU |
- 处理器
CPU:每一台计算机都有中央处理器,可以执行TensorFlow;
GPU:图形处理器,GPU含有高达数千个微小且高效率的计算内核,可以发挥并行计算的强大功能;
TPU:Google为人工智能研发的专用芯片,比GPU的计算性能更佳,目前只部署在Google数据中心,并没对外开放。
- TensorFlow Distributed Execution Engine(分布式执行引擎)
在深度学习中,最花时间的是模型训练,尤其大型的深度学习模型必须使用大量数据训练,需要数天甚至更长时间,TensorFlow具备分布式计算能力,可同时在数百台机器上执行训练模型,大幅缩短模型训练的时间。
- 前端程序语言
TensorFlow可以使用多种前端程序语言,例如Python、C++等,但对Python的支持是最好的,Python具有程序代码简明、易学习、高生产力的特质,面向对象、函数式的动态语言,应用非常广泛。
- 高级API
TensorFlow是比较低级的深度学习API,所以用程序设计模型时必须自行设计:张量乘积、卷积等底层操作,好处是我们可以自行设计各种深度学习模型,但是缺点是开发时需要编写更多程序代码,并且需要花更多时间。所以网上的开发社区以TensorFlow为底层开发很多高级的深度学习API,例如Keras、TF-Learn、TF_Slim、TF_Layer等。这样让开发者使用更简洁、更可读性的程序代码就可以构建出各种复杂的深度学习模型。
参考链接:
TensorFlow中文社区首页