当前位置:   article > 正文

TensorFlow框架

tensorflow框架

TensorFlow框架

本文目录:

一、通过代码了解TensorFlow结构

1.1、TensorFlow实现一个加法运算代码

1.1.1、原生python加法运算

1.1.2、TensorFlow实现加法运算

1.1.3、TensorFlow实现加法运算

1.2、TensorFlow的Hello World

二、TensorFlow架构图

三、TensorFlow结构分析

3.1、张量(Tensor)

3.2、节点(Operation)

3.3、会话(Session)

3.4、数据流图介绍(Graph)

四、附录


一、通过代码了解TensorFlow结构

  我们通过简单的TensorFlow代码,大概了解一下TensorFlow结构:

1.1、TensorFlow实现一个加法运算代码

1.1.1、原生python加法运算

  1. import tensorflow as tf
  2. def tensorflow_demo():
  3. #TensorFlow的基本结构
  4. #: return:
  5. #原生python加法运算
  6. a=2
  7. b=3
  8. c=a+b
  9. print("普通加法运算的结果:", c)
  10. if __name__ == "__main__":
  11. tensorflow_demo()

运行结果:

普通加法运算的结果:5

1.1.2、TensorFlow实现加法运算

  1. import tensorflow as tf
  2. def tensorflow_demo():
  3. #TensorFlow的基本结构
  4. #: return:
  5. #原生python加法运算
  6. a=2
  7. b=3
  8. c=a+b
  9. print("普通加法运算的结果:", c)
  10. # TensorFlow实现加法运算
  11. a_t=tf. constant(2)
  12. b_t=tf. constant(3)
  13. c_t=a_t+b_t
  14. print ("TensorFlow加法运算的结果:\n", c_t)
  15. return None
  16. if __name__ == "__main__":
  17. tensorflow_demo()

运行结果:

普通加法运算的结果:5

TensorFlow加法运算的结果:
Tensor("add_1:0", shape=(), dtype=int32)

输出的结果不是我们理解的格式,调整一下代码

1.1.3、TensorFlow实现加法运算

  1. import tensorflow as tf
  2. def tensorflow_demo():
  3. #TensorFlow的基本结构
  4. #: return:
  5. #原生python加法运算
  6. a=2
  7. b=3
  8. c=a+b
  9. print("普通加法运算的结果:", c)
  10. # TensorFlow实现加法运算
  11. a_t=tf.constant(2)
  12. b_t=tf.constant(3)
  13. c_t=a_t+b_t
  14. print ("TensorFlow加法运算的结果:\n", c_t)
  15. #开启会话
  16. with tf.Session() as sess:
  17. c_t_value = sess.run(c_t)
  18. print("c_t_value的值是:", c_t_value)
  19. return None
  20. if __name__ == "__main__":
  21. tensorflow_demo()

运行结果:

普通加法运算的结果:5

TensorFlow加法运算的结果:
Tensor("add_1:0", shape=(), dtype=int32)

c_t_value的值是:5

1.2、TensorFlow的Hello World

  我们用一段TensorFlow代码输出类似Hello World的效果,

  1. import tensorflow as tf
  2. # 创建一个常量Operation
  3. saya = tf.constant("I hope that every decision you make is firm and certain, that the person in front of you is your sweetheart, and that every day of yours is worth remembering!")
  4. # 启动会话
  5. sess = tf.Session()
  6. # 运行Graph(计算图)
  7. print(sess.run(saya))
  8. # 关闭会话
  9. sess.close()

运行结果:

b'I hope that every decision you make is firm and certain, that the person in front of you is your sweetheart, and that every day of yours is worth remembering!'

# 我希望你的每个决定都坚决而确定,希望你的眼前人就是你的心上人,希望你的每一天都值得怀念!

二、TensorFlow架构图

(图片来源于网络,地址见附录)

  TensorFlow是一个使用数据流图进行数值计算的开源软件库。 图形节点表示数学运算,而图形边缘表示在它们之间流动的多维数据阵列(张量)。

  这种灵活的体系结构使您可以将计算部署到桌面,服务器或移动设备中的一个或多个CPU或GPU,而无需重写代码。

  TensorFlow还包括TensorBoard,一种数据可视化工具包。

Tensoerflow支持的高级特性:

  • 高度的灵活性:通过构件计算图能实现任意目的的计算
  • 高可移植性(Portability):Tensorflow 在CPU和GPU上运行,比如说可以运行在台式机、服务器、手机移动设备等等。
  • 将科研和产品联系在一起
  • 自动求微分:基于梯度的机器学习算法会受益于Tensorflow自动求微分的能力。
  • 多语言支持:Tensorflow 有一个合理的c++使用界面,也有一个易用的python使用界面来构建和执行你的graphs。
  • 性能最优化:由于Tensorflow 给予了线程、队列、异步操作等以最佳的支持,能发挥硬件全部潜能。

TensorFlow系统框架有三大部分组成

第一部分是一个前端框架,Front End。

第二部分,就是中间的这个capi。

第三部分是一个后端的Exec System执行的一个操作系统。

前端系统:它主要是负责提供TensorFlow的一个编程模型,构造计算图和管理session的周期。

后端系统:提供运行时环境,负责执行计算图。

后端系统的设计和实现可以进一步分解为 4 层。

  • 运行时:分别提供本地模式和分布式模式,并共享大部分设计和实现 ;
  • 计算层:由各个 OP 的 Kernel 实现组成;在运行时,Kernel 实现执行 OP 的具体数学运算;
  • 通信层:基于 gRPC 实现组件间的数据交换,并能够在支持 IB 网络的节点间实 现 RDMA 通信;
  • 设备层:计算设备是 OP 执行的主要载体,TensorFlow 支持多种异构的计算设备 类型。

三、TensorFlow结构分析

TensorFlow的基本要素

3.1、张量(Tensor)

  张量: TensorFlow 中的基本数据对象。是TensorFlow中的一个非常基本的一个要素,对神经网络高维度的表达方式。

  TensorFlow中的张量(tensor)是一个多维数组,它是TensorFlow中的基本数据类型。可以将张量视为一种数据容器,其中的数据可以是数字、字符串等类型的值。TensorFlow中的所有计算都是在张量之间进行的。

  张量的每一个维度都代表着张量的一个属性,例如一个二维张量可以代表一个矩阵,其中第一个维度代表行数,第二个维度代表列数。在TensorFlow中,每个张量都有一个静态类型和一个运行时维度大小。静态类型定义了张量的形状(例如,它有多少个维度和每个维度的大小),而运行时维度大小则指定了张量的实际大小。张量可以是常量或者变量,常量的值在创建后不能被改变,而变量的值可以通过训练等方法进行更新。

  在TensorFlow中,通过张量进行数据的表示和计算,可以有效地处理大规模的数值计算问题。

张量(Tensor)在TensorFlow中,张量的维度被描述为“阶”,但是,张量的阶和矩阵的阶并不是同一个概念,张量的阶,是张量维度的一个数量的描述。

x=3零阶张量        (纯量)

v=[1.1,2.2,3.3]           一阶张量(向量)

t=[[1,2,3],[4,5,6],[7,8,9]]           二阶张量(矩阵)379373142

m=[[[2],[4], [6]],[[8],[10],[12]],[[14],[16],[18]]]        三阶张量(立方体)

3.2、节点(Operation)

  TensorFlow 中的节点(Operation)是计算图(computation graph)中的基本单位,它可以表示数学运算、数据输入输出或者控制流程等。

  每个节点都有零个或者多个输入值,以及一个输出值。

  在 TensorFlow 中,节点的输入和输出都是张量(tensor),即多维数组,节点对张量进行操作后产生新的张量。

  节点可以通过 TensorFlow 中的 API 进行创建,每个节点都有一个唯一的名称,并且可以指定节点的操作类型(例如加法、乘法、卷积等)。

  在 TensorFlow 中,节点是按照依赖关系构成的有向无环图(DAG),节点之间的边表示数据的依赖关系,即前一个节点的输出张量作为后一个节点的输入张量。

  通过构建计算图来描述深度学习模型的结构和计算过程,然后利用计算图来执行模型的训练和预测任务。

3.3、会话(Session)

  无论是在TensorFlow也好,或者是来任何框架,任何语言中。都有这么一个会话的概念,会话实际量就是管理着一个模型或者一个函数或者说一个操作开始到结尾整个的这么一场流程。

  TensorFlow 会话(Session)是 TensorFlow 中用来运行计算图(Graph)的类。

  计算图是由一系列的 TensorFlow 操作(Operation)组成的,每个操作有零个或多个输入和输出,代表了一种对数据进行转换或操作的方式。会话负责分配计算资源(如 CPU 或 GPU)来执行这些操作,并保存操作执行的中间结果。

  使用会话可以实现 TensorFlow 中的延迟执行机制。

  在创建计算图时,仅仅是定义或描述了计算图的结构,而没有运行任何计算操作。在会话中,可以多次运行计算图,每次运行时传入新的计算数据,而会话会自动地将计算图中的操作按照依赖关系进行调度和执行,并得到最终的结果。同时,会话还可以控制计算资源的分配、内存管理、模型的保存和恢复等功能。

3.4、数据流图介绍(Graph)

  TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源框架。

  一个TensorFlow在运行的过程中,它会有需要进行计算,计算中会有很多节点,很多操作,这些节点和操作就组成了一个图。

  代表模型的数据流,由多个ops(操作即节点)和tensor(数据流即边)组成,算法都会表示成计算图(数据流图),可看作是有向图,张量就是通过各种操作在有向图中流动。

  在TensorFlow中,要想启动一个图的前提是要先创建一个会话(Session) -TensorFlow的所有对图的操作, 都必须放在会话中进行。

 线(edges) 则表示在节点间相互联系的多维数据数组,即张量(tensor)。

TensorFlow 程序通常被组织成:

一个构建图阶段:流程图(定义数据:张量 Tensor 与操作:节点 Op)。

一个执行图阶段:调用各方支援,将定义好的操作与数据运行起来。

在构建阶段,数据与操作的执行步骤被描述成一个图。

在执行阶段,使用会话执行构建好的图中的操作。

图和会话:

图:这是 TensorFlow 将计算表示为指令之间的依赖关系的一种表示法。

会话: TensorFlow 跨一个或多个本地或远程设备运行数据流图的机制。

节点:提供图当中执行的操作。

四、附录

图文参考:网络收集资料

阿里课程
https://blog.csdn.net/shareviews/article/details/83094558

              推荐阅读:
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/123680
推荐阅读
相关标签
  

闽ICP备14008679号