#############下面引用自知乎#############################
张量(tensor)是多维数组,目的是把向量、矩阵推向更高的维度。更具体点,也即是说:
把三维张量画成一个立方体:
我们就可以进一步画出更高维的张量:
从数据结构上来看,张量就是多维数组。
这个定义本身没有错,但是没有真正反映张量的核心。
#############上面引用自知乎#############################
好了,物理中的张量什么意思呢?
从上图可以看到,每个方向的红色的力向量(1D张量)可以分别表示为:
[5,78,2,34,0]、
[6,79,3,35,1]、
[7,80,4,36,2]
那么一系列张力的集合就可以表示为如下2D张量
>>> import numpy as np
>>> x=np.array([[5,78,2,34,0],
... [6,79,3,35,1],
... [7,80,4,36,2]])
>>> x.ndim
2
也就是说,可以理解为:
2D张量是1D张量的有序的集合(集合这个词语这里不精确,只是为了便于理解)
同样的,3D张量也是2D张量的集合,3D张量举例:
>>> import numpy as np
>>> x=np.array([[[5,78,2,34,0],
... [6,79,3,35,1],
... [7,80,4,36,2]],
... [[5,78,2,34,0],
... [6,79,3,35,1],
... [7,80,4,36,2]],
... [[5,78,2,34,0],
... [6,79,3,35,1],
... [7,80,4,36,2]]])
>>> x.ndim
3
张量的点积运算:
>>> import numpy as np
>>> x=np.array([[5,78,2,34,0],
... [6,79,3,35,1],
... [7,80,4,36,2]])
>>> y=np.dot(x,x.T)
>>> y
array([[7269, 7388, 7507],
[7388, 7512, 7636],
[7507, 7636, 7765]])
可以看到2D张量点积结果依然是2D张量