前言:实践深度学习框架TensorFlow、PyTorch等的第一道拦路虎就是对Tensor的理解。 以下是我在理解张量的过程中的一些总结。
1、什么是张量
这是bilibili搬运youtube的一个视频,很直观的解释了张量的含义。
**通俗一点讲:**张量是对标量,矢量,矩阵的推广。张量的表达看起来像是数组,其实每个值是在对应空间上的分量的大小。基向量和分量一起形成了张量的表达,他在物理学上的优点是,当基向量发生变化的时候(坐标系发生变化或者说是观察方向发生了变化),对应的分量也会发生变化,但整个张量却能保持不变。
下图是对张量从直观上给出的示意。一阶张量可以理解成一个向量,二阶张量可以理解成矩阵,三阶张量可以理解成立方体,四阶张量可以理解成立方体组成的一个向量,五阶张量可以理解成立方体组成的矩阵,依次类推。
什么是Rank
Rank就是上文所说的阶。他是指这个张量拥有的基底向量的数量,也就是他的方向的数量。从上图中其实能看明白为什么是一阶、二阶、三阶。下图是一个示意。
在实际操作中,可以理解成 [ 的深度。例如:
rank=1: [0,1,2]
rank=2: [[0,1],[2,3]]
rank=3: [[[0,1],[2,3]],[[4,5],[6,7]]]
什么是Shape
shape是形状,他是指明每一层有多少个元素。比如[2,3,4]是指第一层2个元素,第二层3个元素,第三层4个元素,通过这个我们就可以知道这个张量一共有2 × 3 × 4=24 个元素。上面的rank=3的张量,他的shape是[4,2]。下面这个代码也能说明问题。
import tensorflow as tf
# 定义了一个张量,有6个元素,设置他的形状是[2.3]
a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2,3])
with tf.Session() as session:
print(session.run(a))
打印的结果是
[[1 2 3]
[4 5 6]]
END
注:转载自LeFer