tensorflow基础之张量(Tensor)、阶(Rank)、计算图(Graph)、节点(Node)

本文介绍了TensorFlow中的核心概念:张量(Tensor)、计算图(Graph)和节点(Node)。张量是多维数组,表示不同维度的数据;计算图由节点组成,每个节点代表一个运算操作。通过示例代码展示了如何构建和运行计算图,并提及了占位节点和变量节点的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

张量(tensor)是什么?

tensorflow对张量(Tensor)是这样定义的:

张量是对矢量和矩阵向潜在的更高维度的泛化。TensorFlow 在内部将张量表示为基本数据类型的 n 维数组。

显然,tensorflow将张量定义为多维数组。它可以表示任意维度的数组,维度用rank(阶)表示。它在深度学习中存在的意义是创造更高维度的矩阵、向量。

借用知乎【马同学】的图片,我们可以形象的认识张量
在这里插入图片描述
把3阶张量画为一个立方体
在这里插入图片描述
我们就可以进一步地画出更高维的张量
在这里插入图片描述
0阶张量——点
1阶张量——线
2阶张量——面
3阶张量——体
再把3阶张量当成一个点,则可以进一步描绘出4阶张量——线,依此类推。

张量有什么用?

举个简单的例子,一个彩色图像文件(RGB)一般会被处理为3阶tensor,每个二维数组中的元素为一个像素,每个像素包含数值R、G、B。
在这里插入图片描述
但在机器学习工作中,我们经常要处理不止一张图片,我们要处理的是一个集合。这意味着,3d-tensor无法满足我们的需求,我们需要一个4d-tensor,4阶张量!它存储了一定数量的彩色图片!

计算图The Computational Graph

计算图是由计算节点(node)构成的图。节点node代表一种运算操作,如加法操作Add等,输入大于等于0个张量,输出一个张量。

tensorflow = tensor(张量) + flow(流动)=> tensorflow的计算图每个节点的输入输出都是tensor,而连接节点的有向线段就是flow,表示从一个tensor状态到另一个tensor状态。
在这里插入图片描述
这边再看一个简单的代码
在这里插入图片描述
代码分为三个部分:

  1. 导入语句
  2. 构建计算图,构建计算图后,直接打印node3,得到的是该节点的相关信息,计算没有执行
  3. 运行计算图,使用sess.run()才能运行计算图,得到该节点运算结果。

示例代码中,计算图构建完成后,最后让计算图执行运算的是Session的Run方法。Session封装了对TensorFlow运行时的控制,及其状态,为用户提供了交互的接口。

其他类型的节点

  • 占位节点(tf.placeholder)
    占位节点,在构建计算图阶段先定义节点(只需定义类型),运行计算图时必须提供节点的值。
a = tf.placeholder(tf.float32)
b = tf.placeholder(tf.float32)
adder_node = a + b  

print(sess.run(adder_node, {a: 3, b:4.5}))
print(sess.run(adder_node, {a: [1,3], b: [2, 4]}))

程序输出

7.5
[ 3.  7.]

ps: 占位节点只负责占位,但是无记忆,运行计算图提供的值是临时性的

  • 变量节点(tf.Variable)
    比占位节点更加灵活的、即可以动态修改、又具有记忆的节点是变量节点。使用时需要提供初始值和变量类型。tf.assign可以动态改变变量节点的值,但需要sess.run完成赋值。
W = tf.Variable([.3], tf.float32)
b = tf.Variable([-.3], tf.float32)
x = tf.placeholder(tf.float32)
linear_model = W * x + b

sess.run(tf.global_variables_initializer()) # 在训练开始前一次性初始化所有可训练变量
print(sess.run(linear_model, {x:[1,2,3,4]}))

fixW = tf.assign(W, [-1.])
fixb = tf.assign(b, [1.])   
sess.run([fixW, fixb])
print(sess.run(linear_model, {x:[1,2,3,4]}))

【相关资料】
TensorFlow从0到1 - 2 - TensorFlow核心编程
笔记 | 什么是张量(tensor)& 深度学习
什么是张量(tensor)?
【深度学习-2】TensorFlow基础(一): tensor and operation
浅谈什么是张量tensor
tensorflow对张量的定义

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值