TensorFlow的架构
TensorFlow是一个端到端的机器学习开源平台,由谷歌开发,有许多热情的开源贡献者。TensorFlow具有可扩展性和灵活性,可以在数据中心和手机上运行。它可以在分布式环境中的单机和多机上运行。在这篇文章中,我们将探讨TensorFlow的这种极端灵活性和可扩展性背后的秘密。
编程模型和基本概念
TensorFlow中的每个计算都描述了一个由节点和边组成的有向图,其中节点是操作/函数,边是输入和输出溢出和这些函数。
- TensorFlow中的输入/输出被称为Tensor。Tensor不过是一个多维数组,其基础元素的类型在图的构建时被指定。
- 使用TensorFlow的客户端程序使用认可的编程语言(C或Python)生成数据流图。
- 一个操作是一个函数,它有一个名字,代表一个抽象的计算。一个操作可以有一些属性,这些属性应该在构建图的时候生成并交予。
- 属性的一个经常性应用是制造操作的多态性。
- 内核是对特定设备的操作的实现。
- 客户端程序通过创建会话与TensorFlow系统流进行交互。会话接口有扩展的样式来生成一个计算图和其强化的run()方法,通过提供所需的输入来计算起诉图中各个节点的输出。
- 在大部分的机器学习任务中,计算图实现了多倍的次数,而且大部分的普通张量在解体后不能存活,这就是为什么TensorFlow有变量。
- 变量是一种特殊的操作,它返回一个变量张量的句柄,该张量可以在图形的多次起诉中存活。
- 可训练的参数,如权重、偏差,被重新放在变量中的张量中。
TensorFlow的架构
TensorFlow的架构
- TensorFlow的第一层由设备层和网络层组成。设备层包含与各种设备如GPU、CPU、TPU进行通信的实现,在操作系统中TensorFlow将运行。而网络层有实现与不同的机器使用不同的网络协议在可分配的可训练的设置中进行通信。
- TensorFlow的第二层包含主要用于机器学习的应用的内核实现。
- TensorFlow的第三层由分布式主控和数据流执行器组成。分布式主控器有能力将工作负载分配到系统的不同设备上。而数据流执行器则以最佳方式执行数据流图。
- 下一层以API的形式暴露了所有的功能,它是用C语言实现的。选择C语言是因为它快速、可靠,并且可以在任何操作系统上运行。
- 第五层提供对Python和C++客户端的支持。
- 而TensorFlow的最后一层包含用python和C++实现的训练和推理库。