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加法运算
import tensorflow as tf
def tensorflow_demo():
#TensorFlow的基本结构
#: return:
#原生python加法运算
a=2
b=3
c=a+b
print("普通加法运算的结果:", c)
if __name__ == "__main__":
tensorflow_demo()
运行结果:
普通加法运算的结果:5
1.1.2、TensorFlow实现加法运算
import tensorflow as tf
def tensorflow_demo():
#TensorFlow的基本结构
#: return:
#原生python加法运算
a=2
b=3
c=a+b
print("普通加法运算的结果:", c)
# TensorFlow实现加法运算
a_t=tf. constant(2)
b_t=tf. constant(3)
c_t=a_t+b_t
print ("TensorFlow加法运算的结果:\n", c_t)
return None
if __name__ == "__main__":
tensorflow_demo()
运行结果:
普通加法运算的结果:5
TensorFlow加法运算的结果:
Tensor("add_1:0", shape=(), dtype=int32)
输出的结果不是我们理解的格式,调整一下代码
1.1.3、TensorFlow实现加法运算
import tensorflow as tf
def tensorflow_demo():
#TensorFlow的基本结构
#: return:
#原生python加法运算
a=2
b=3
c=a+b
print("普通加法运算的结果:", c)
# TensorFlow实现加法运算
a_t=tf.constant(2)
b_t=tf.constant(3)
c_t=a_t+b_t
print ("TensorFlow加法运算的结果:\n", c_t)
#开启会话
with tf.Session() as sess:
c_t_value = sess.run(c_t)
print("c_t_value的值是:", c_t_value)
return None
if __name__ == "__main__":
tensorflow_demo()
运行结果:
普通加法运算的结果:5
TensorFlow加法运算的结果:
Tensor("add_1:0", shape=(), dtype=int32)c_t_value的值是:5
1.2、TensorFlow的Hello World
我们用一段TensorFlow代码输出类似Hello World的效果,
import tensorflow as tf
# 创建一个常量Operation
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!")
# 启动会话
sess = tf.Session()
# 运行Graph(计算图)
print(sess.run(saya))
# 关闭会话
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
推荐阅读:
让Ai帮我们画个粽子,它会画成什么样呢? |
给照片换底色(python+opencv) | 猫十二分类 | 基于大模型的虚拟数字人__虚拟主播实例 |
计算机视觉__基本图像操作(显示、读取、保存) | 直方图(颜色直方图、灰度直方图) | 直方图均衡化(调节图像亮度、对比度) |
语音识别实战(python代码)(一) | 人工智能基础篇 | 计算机视觉基础__图像特征 |
matplotlib 自带绘图样式效果展示速查(28种,全) | ||
Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一) | ||
立体多层玫瑰绘图源码__玫瑰花python 绘图源码集锦 | Python 3D可视化(一) | 让你的作品更出色——词云Word Cloud的制作方法(基于python,WordCloud,stylecloud) |
python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印 | 用代码写出浪漫__合集(python、matplotlib、Matlab、java绘制爱心、玫瑰花、前端特效玫瑰、爱心) | python爱心源代码集锦(18款) |
Python中Print()函数的用法___实例详解(全,例多) | Python函数方法实例详解全集(更新中...) | 《 Python List 列表全实例详解系列(一)》__系列总目录、列表概念 |
用代码过中秋,python海龟月饼你要不要尝一口? | python练习题目录 | |
草莓熊python turtle绘图(风车版)附源代码 | 草莓熊python turtle绘图代码(玫瑰花版)附源代码 | 草莓熊python绘图(春节版,圣诞倒数雪花版)附源代码 |
巴斯光年python turtle绘图__附源代码 | 皮卡丘python turtle海龟绘图(电力球版)附源代码 | |
Node.js (v19.1.0npm 8.19.3) vue.js安装配置教程(超详细) | 色彩颜色对照表(一)(16进制、RGB、CMYK、HSV、中英文名) | 2023年4月多家权威机构____编程语言排行榜__薪酬状况 |
| ||
手机屏幕坏了____怎么把里面的资料导出(18种方法) | 【CSDN云IDE】个人使用体验和建议(含超详细操作教程)(python、webGL方向) | 查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决 |
vue3 项目搭建教程(基于create-vue,vite,Vite + Vue) | ||
2023年春节祝福第二弹——送你一只守护兔,让它温暖每一个你【html5 css3】画会动的小兔子,炫酷充电,字体特 | 别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(4套) | SVG实例详解系列(一)(svg概述、位图和矢量图区别(图解)、SVG应用实例) |
【程序人生】卡塔尔世界杯元素python海龟绘图(附源代码),世界杯主题前端特效5个(附源码) | HTML+CSS+svg绘制精美彩色闪灯圣诞树,HTML+CSS+Js实时新年时间倒数倒计时(附源代码) | 2023春节祝福系列第一弹(上)(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载) |
tomcat11、tomcat10 安装配置(Windows环境)(详细图文) | Tomcat端口配置(详细) | Tomcat 启动闪退问题解决集(八大类详细) |