赞
踩
首先我们来了解一下什么是张量,张量有四个定义:
这里我们要学习的是张量与深度学习的相关知识,下面的几个定义是物理和工学领域内的张量定义,我们这里只考虑其在数学领域内的定义,也就是第一个:张量是一个多维数组 。
数组是有序的元素序列,我们将 不同维度的数组 定义为不同阶的张量:
将 标量 (只有大小没有方向的数) 定义为 0 阶张量 ,如
将 一维数组 定义为 一阶张量 ,如下所示
将多个一维数组的拼接,即 矩阵 定义为 二阶张量 :
将多个 矩阵的叠加 定义为 三阶张量 :
下面我们类比一阶张量,将三阶张量排列为一个数组,数组的元素是三阶张量,如果我们将三阶张量记为
那么多个元素组成的数组就定义为 四阶张量 ,如下所示
同样,将四阶张量拼接,组成三阶张量的矩阵,称为 五阶张量 ,如下所示
对上面的定义进行循环重复,我们就可以定义更高阶的张量了
有了对不同张量的理解后,我们看一下张量具体可以 描述的对象 有哪些。
一阶张量是一个一维数组,即一组数,我们可以将一组数表示为一个矢量,二阶张量是一个矩阵,因此我们可以将张量作为矢量和矩阵概念的推广。
三阶张量
对于 RGB 图片,我们可以理解为由三张分别表示 R,G,B 分量的图片堆叠而成,如下
对于每个分量图片,我们都可以看成一个矩阵,那么一张 RGB 图片就可以用三阶的张量进行表示。
四阶张量
对于多张 RGB 图片,我们可以用四阶张量进行表示,可以看作是三阶张量(单张RGB图像)的数组(多张 RGB 图片)。
五阶张量
视频是由多张图片组成的,因此每个视频可以用一个四阶张量表示,显然,多个视频可以用五阶张量表示。
在张量的讨论中,我们对于分量的表示和区分都使用下表字母来表示,下面我们来了解一下用指标符号表示表达式。
对于下面的一组数:
a
1
,
a
2
,
a
3
,
⋯
,
a
n
a_1,a_2,a_3,\cdots,a_n
a1,a2,a3,⋯,an
我们可以用以下的表达项来简写:
a
i
,
i
=
1
,
2
,
⋯
,
n
a_i,i=1,2,\cdots,n
ai,i=1,2,⋯,n
即用 i \pmb{i} iii (指标) 来表示将该项罗列,我们称这种在取值范围内对表达项进行罗列的指标为 自由指标,自由指标在表达项中只出现一次。
对于求和表达式:
S
=
∑
i
=
1
n
a
i
x
i
=
a
1
x
1
+
a
2
x
2
+
⋯
+
a
n
x
n
S=\sum_{i=1}^n a_ix_i=a_1x_1+a_2x_2+ \cdots +a_nx_n
S=i=1∑naixi=a1x1+a2x2+⋯+anxn
我们约定将其简写为
S
=
a
i
x
i
S=a_ix_i
S=aixi
求和约定的表达项 a i x i a_ix_i aixi 中 i i i 出现两次,我们称在一个 表达项 中重复出现两次的指标为 哑指标 ,哑指标表示要对该表达项罗列后再求和 ,只有在表达项中出现两次的才称为哑指标。
现在,我们利用自由指标和哑指标来表示下式:
A
11
x
1
+
A
12
x
2
+
A
13
x
3
=
b
1
A_{11}x_1+A_{12}x_2+A_{13}x_3=b_1
A11x1+A12x2+A13x3=b1
A 21 x 1 + A 22 x 2 + A 23 x 3 = b 2 A_{21}x_1+A_{22}x_2+A_{23}x_3=b_2 A21x1+A22x2+A23x3=b2
A 31 x 1 + A 32 x 2 + A 33 x 3 = b 3 A_{31}x_1+A_{32}x_2+A_{33}x_3=b_3 A31x1+A32x2+A33x3=b3
因为一个自由指标表示将表达式的罗列,我们可以用自由指标将三个式子合并为一个:
A
i
1
x
1
+
A
i
2
x
2
+
A
i
3
x
3
=
b
i
A_{i1}x_1+A_{i2}x_2+A_{i3}x_3=b_i
Ai1x1+Ai2x2+Ai3x3=bi
之后可以用哑指标将多个表达项合为一项:
A
i
j
x
j
=
b
i
A_{ij}x_j=b_i
Aijxj=bi
指标可以用任意的字母表示,我们约定
我们可以用一个表达式中出现多对哑指标来表示 多重求和 ,如
a
i
j
x
i
x
j
=
∑
i
=
1
3
∑
j
=
1
3
a
i
j
x
i
x
j
a_{ij}x_ix_j=\sum_{i=1}^3 \sum_{j=1}^3 a_{ij} x_i x_j
aijxixj=i=1∑3j=1∑3aijxixj
δ
i
j
\delta_{ij}
δij 是张量中的一个基本符号,也称为单位张量,它的定义为
δ
i
j
=
{
1
i
=
j
0
i
≠
j
(
i
,
j
=
1
,
2
,
⋯
,
n
)
\delta_{ij}=
特性:
δ i j \delta_{ij} δij 对于指标 i i i 和 j j j 是对称的,即 δ i j = δ j i \pmb{\delta_{ij}=\delta_{ji}} δij=δjiδij=δjiδij=δji 。
δ
i
j
\delta_{ij}
δij 的分量集合是一个单位矩阵。在三维空间中
[
δ
11
δ
12
δ
13
δ
21
δ
22
δ
23
δ
31
δ
32
δ
33
]
=
[
1
0
0
0
1
0
0
0
1
]
\left[
δ
i
j
\delta_{ij}
δij 具有换标作用。如
d
s
2
=
δ
i
j
d
x
i
d
x
j
=
d
x
i
d
x
i
=
d
x
j
d
x
j
\mathrm{d} s^2= \delta_{ij} \mathrm{d} \textcolor{red}{x_i} \mathrm{d} \textcolor{red}{x_j} = \mathrm{d} \textcolor{red}{x_i} \mathrm{d} \textcolor{red}{x_i} = \mathrm{d} \textcolor{red}{x_j} \mathrm{d} \textcolor{red}{x_j}
ds2=δijdxidxj=dxidxi=dxjdxj
如果符号
δ
i
j
\delta_{ij}
δij 的两个指标中,有一个和同项中其它因子的指标相同,则可以把该因子的那个相同指标换成
δ
i
j
\delta_{ij}
δij 的另一个指标,而
δ
i
j
\delta_{ij}
δij 自动消失。这是因为:
δ
i
j
d
x
i
d
x
j
=
δ
1
j
d
x
1
d
x
j
+
δ
2
j
d
x
2
d
x
j
+
δ
3
j
d
x
3
d
x
j
根据上面
δ
i
j
\delta_{ij}
δij 的定义我们可以知道,只有
i
=
j
i=j
i=j 时,对应的项不为
0
0
0 ,因此上式变为
δ
i
j
d
x
i
d
x
j
=
δ
1
1
d
x
1
d
x
1
+
δ
2
2
d
x
2
d
x
2
+
δ
3
3
d
x
3
d
x
3
=
d
x
1
d
x
1
+
d
x
2
d
x
2
+
d
x
3
d
x
3
=
d
x
i
d
x
i
=
d
x
j
d
x
j
类似的我们可以得到:
δ
i
j
a
j
k
=
a
i
k
\delta_{ij}a_{jk}=a_{ik}
δijajk=aik
δ i j a k j = a k i \delta_{ij}a_{kj}=a_{ki} δijakj=aki
δ i j δ j k = δ i k \delta_{ij} \delta_{jk}=\delta_{ik} δijδjk=δik
δ i j δ j k δ k l = δ i l \delta_{ij} \delta_{jk} \delta_{kl}=\delta_{il} δijδjkδkl=δil
应用:
三个相互正交的单位基矢量构成正交标准化基,它们具有如下的性质:
上面的两个性质可以用
δ
i
j
\delta_{ij}
δij 的形式统一表示,即:
e
i
⋅
e
j
=
δ
i
j
e_i \cdot e_j=\delta_{ij}
ei⋅ej=δij
该符号在笛卡尔坐标系下的定义为
e
r
s
t
=
{
1
当
r
,
s
,
t
为
正
序
排
列
时
−
1
当
r
,
s
,
t
为
逆
序
排
列
时
0
当
r
,
s
,
t
中
有
两
个
指
标
相
同
时
e_{rst}=\left\{
或
e
r
s
t
=
1
2
(
r
−
s
)
(
s
−
t
)
(
t
−
r
)
e_{rst}=\frac{1}{2}(r-s)(s-t)(t-r)
erst=21(r−s)(s−t)(t−r)
其中
特性:
每一项都是由张量组成的方程称为 张量方程 ,如:
σ
i
j
=
C
i
j
k
l
ε
k
l
⟹
σ
=
C
:
ε
\sigma_{ij}=C_{ijkl} \ \varepsilon_{kl} \ \ \ \ \Longrightarrow \pmb{\sigma}=\pmb{C:\varepsilon}
σij=Cijkl εkl ⟹σσσ=C:εC:εC:ε
σ i j + f i = 0 ⟹ ∇ ⋅ σ + f = 0 \sigma_{ij} +f_i=0 \ \ \ \ \ \Longrightarrow \nabla \pmb{\cdot \ \sigma} + \pmb{f} = \pmb{0} σij+fi=0 ⟹∇⋅ σ⋅ σ⋅ σ+fff=000
特性:张量方程具有与坐标选择无关的性质,可用于描述客观物理线性的固有特性和普遍规律。
在了解张量的各种代数运算之前,我们先来看一下张量的表示方法。
高阶张量我们使用粗体字母表示, χ ∈ R I 1 × I 2 × ⋯ × I N \pmb{\chi} \in \mathbb{R}^{I_1 \times I_2 \times \cdots \times I_N} χχχ∈RI1×I2×⋯×IN,其表示 N N N 阶的张量, I n I_n In 表示第 n n n 维的大小。 N N N 阶张量 χ \pmb{\chi} χχχ 中的元素可以记为 x i 1 i 2 ⋯ i n x_{i_1 i_2 \cdots i_n } xi1i2⋯in 。如 χ ∈ R 2 × 3 × 4 \pmb{\chi} \in \mathbb{R}^{2 \times 3 \times 4} χχχ∈R2×3×4 ,表示大小为 2 × 3 × 4 2 \times 3 \times 4 2×3×4 的三维数组, x 214 x_{214 } x214 表示第二行、第一列、第四层的元素。
Kronecker 乘积(张量积)
对于两个矩阵
A
∈
R
I
×
J
\mathrm{A} \in \mathbb{R}^{I \times J}
A∈RI×J 和
B
∈
R
K
×
L
\mathrm{B}\in\mathbb{R}^{K\times L}
B∈RK×L ,其 Kronecker 积被定义为如下的
(
I
K
)
×
(
J
L
)
(IK) \times (JL)
(IK)×(JL) 的矩阵,即将
A
A
A 的每个元素乘以矩阵
B
B
B ,我们用符号
⊗
\otimes
⊗ 来表示 Kronecker 乘积:
A
⊗
B
=
[
a
11
B
a
12
B
…
a
1
J
B
a
21
B
a
22
B
…
a
2
J
B
⋮
⋮
⋱
⋮
a
l
1
B
a
12
B
…
a
I
J
B
]
Hadamard 乘积
Hadamard 是对 相同大小的矩阵 进行的,它让相同位置的元素相乘,对矩阵
A
,
B
∈
R
I
×
J
A, B \in \mathbb{R}^{I \times J}
A,B∈RI×J ,其 Hadamard 乘积记作
A
∗
B
A*B
A∗B :
A
∗
B
=
[
a
11
b
11
a
12
b
12
…
a
1
J
b
1
J
a
21
b
21
a
22
b
22
…
a
2
J
b
2
J
⋮
⋮
⋱
⋮
a
I
1
b
I
1
a
I
2
b
I
2
…
a
I
J
b
I
J
]
\mathrm{A} * \mathrm{B} =
Khatri - Rao 乘积
Khatri - Rao 乘积是列对列的乘积,相乘的两个矩阵必须有相同的列数,矩阵
A
∈
R
I
×
K
\mathrm{A}\in\mathbb{R}^{I \times K}
A∈RI×K 和
B
∈
R
L
×
K
\mathrm{B}\in\mathbb{R}^{L\times K}
B∈RL×K 的 Khatri - Rao 乘积记为
A
⊙
B
\mathrm{A} \odot \mathrm{B}
A⊙B ,即将矩阵
A
A
A 的每一列和矩阵
B
B
B 的对应列进行 Kronecker 积:
A
⊙
B
=
[
a
1
⊗
b
1
a
2
⊗
b
2
…
a
K
⊗
b
K
]
\mathrm{A}\odot \mathrm{B} =
如,对矩阵
A
=
[
1
2
3
4
]
=
(
a
1
,
b
1
)
A=\left[
A
⊙
B
=
(
a
1
⊗
a
2
,
b
1
⊗
b
2
)
=
[
[
1
3
]
⊗
[
5
7
9
]
[
2
4
]
⊗
[
6
8
10
]
]
A \odot B=(\boldsymbol{a_1}\otimes \boldsymbol{a_2},\boldsymbol{b_1}\otimes \boldsymbol{b_2})= \left[
常用特殊张量
零张量
若张量
T
=
0
T=0
T=0 ,则
T
i
j
=
0
,
T
i
j
′
=
0
T_{ij}=0,T_{ij}^{'}=0
Tij=0,Tij′=0
单位张量
笛卡尔坐标系中分量为
δ
i
j
\delta_{ij}
δij 的二阶张量
I
I
I ,即:
I
=
δ
i
j
e
i
e
j
=
e
1
e
1
+
e
2
e
2
+
e
3
e
3
I=\delta_{ij}e_i e_j=e_1 e_1 + e_2 e_2 +e_3 e_3
I=δijeiej=e1e1+e2e2+e3e3
I i j = δ i j 且 I i j ′ = δ i j I_{ij}=\delta_{ij} \ \ \ \small{且}\ \ \ \ I_{ij}^{'}=\delta_{ij} Iij=δij 且 Iij′=δij
单位张量和任意张量的点积就等于该张量本身。
转置张量
对于二阶张量
T
=
T
i
j
e
i
e
j
T=T_{ij}e_i e_j
T=Tijeiej ,由对换分量指标而基矢量顺序保持不变所得到的新张量
T
T
=
T
j
i
e
i
e
j
=
T
i
j
e
j
e
i
T^T=T_{ji}e_i e_j=T_{ij} e_j e_i
TT=Tjieiej=Tijejei
称为张量 T T T 的转置张量。
对称张量
满足
T
=
T
T
T=T^T
T=TT,即
T
i
j
=
T
j
i
T_{ij}= T_{ji}
Tij=Tji 的张量。
反对称张量
满足
T
=
−
T
T
T=-T^T
T=−TT,即
T
i
j
=
−
T
j
i
T_{ij}= -T_{ji}
Tij=−Tji 的张量。
加法分解
任意二阶张量
T
T
T 均可以分解为对称张量
S
S
S 和反对称张量
A
A
A 之和:
T
=
S
+
A
T=S+A
T=S+A
其中 S = 1 2 ( T + T T ) S=\frac{1}{2}(T+T^T) S=21(T+TT) , A = 1 2 ( T − T T ) A=\frac{1}{2}(T-T^T) A=21(T−TT)
置换张量
笛卡尔系中以置换符号
e
r
s
t
e_{rst}
erst 为分量的三阶张量为置换张量
e
=
e
r
s
t
e
r
e
s
e
t
\pmb{e}=e_{rst} \pmb{e_r} \pmb{e_s} \pmb{e_t}
eee=ersterereresesesetetet
主方向与主分量
二阶张量可以定义为一种由矢量
a
\pmb{a}
aaa,
b
\pmb{b}
bbb 的线性变换,即
T
⋅
a
=
b
;
T
i
j
a
j
=
b
i
\pmb{T \cdot a = b} \ \ ; \ \ T_{ij}a_j=b_i
T⋅a=bT⋅a=bT⋅a=b ; Tijaj=bi
一般来说,矢量
a
\pmb{a}
aaa 与
b
\pmb{b}
bbb 并不同向。对于给定的任意二阶张量
T
\pmb{T}
TTT 能否找到某个矢量
v
\pmb{v}
vvv ,它在线性变换后能保持方向不变,即:
T
⋅
v
=
λ
v
;
T
i
j
v
j
=
λ
v
i
\pmb{T \cdot v }= \lambda \pmb{v} \ \ \ ; \ \ \ T_{ij} v_{j} =\lambda v_i
T⋅vT⋅vT⋅v=λvvv ; Tijvj=λvi
根据上式,类比矩阵的特征向量的求法可以得到:
(
T
i
j
−
λ
δ
i
j
)
v
j
=
0
(
i
=
1
,
2
,
3
)
(T_{ij}-\lambda \delta_{ij})v_j=0 \ \ \ (i=1,2,3)
(Tij−λδij)vj=0 (i=1,2,3)
其中
λ
\lambda
λ 是标量 ,
δ
i
j
\delta_{ij}
δij 是单位矩阵,该问题就转换为求
v
j
v_j
vj 的线性齐次代数方程组,其存在非零解的充分必要条件是系数行列式为零,即:
∣
T
11
−
λ
T
12
T
13
T
21
T
22
−
λ
T
33
T
31
T
32
T
33
−
λ
∣
=
0
将左边行列式展开可得:
λ
3
−
I
1
λ
2
+
I
2
λ
−
I
3
=
0
\lambda ^3 - I_1 \lambda ^2 +I_2 \lambda - I_3 = 0
λ3−I1λ2+I2λ−I3=0
这是关于 λ \lambda λ 的特征方程,我们可以求出特征方程的三个解,是三个特征值,称为张量 T T T 的 主分量 。当 T T T 是是对称张量时,存在三个实特征值 λ ( k ) \lambda_{(k)} λ(k) ,根据每个特征值,我们带入上面的等式,可以求出每个特征值对应的特征向量 v j ( k ) v_{j(k)} vj(k),通过该方法求得的三个单位矢量 v ( k ) = v j ( k ) e j \pmb{v}_{(k)}=v_{j(k)}\pmb{e}_j vvv(k)=vj(k)eeej 称为 张量 T T T 的主方向 。
沿主方向
v
(
1
)
,
v
(
2
)
,
v
(
3
)
\pmb{v}_{(1)},\pmb{v}_{(2)},\pmb{v}_{(3)}
vvv(1),vvv(2),vvv(3) 的正交坐标系称为张量
T
T
T 的 主坐标系 。在主坐标系中,有
T
=
λ
(
1
)
e
(
1
)
e
(
1
)
+
λ
(
2
)
e
(
2
)
e
(
2
)
+
λ
(
3
)
e
(
3
)
e
(
3
)
T=\lambda_{(1)}\pmb{e}_{(1)}\pmb{e}_{(1)}+ \lambda_{(2)}\pmb{e}_{(2)}\pmb{e}_{(2)}+ \lambda_{(3)}\pmb{e}_{(3)}\pmb{e}_{(3)}
T=λ(1)eee(1)eee(1)+λ(2)eee(2)eee(2)+λ(3)eee(3)eee(3)
首先我们对于一个如下的三阶张量,来了解几个概念。
纤维(fiber)
纤维是从张量中抽取向量的操作。对于上面的张量来说,如果固定其中的两个维度,只保留一个维度可以变换,可以得到一个向量。
如果保留第
k
k
k 个下标度可以改变,则我们称为张量的 mode-k fiber ,我们记为
χ
i
1
⋯
k
−
1
:
k
+
1
⋯
i
n
\pmb{\chi}_{i_1\cdots k-1\ \pmb{:} \ k+1\cdots i_n}
χχχi1⋯k−1 ::: k+1⋯in,也就是将第 k 维的下标用
:
\pmb{:}
::: 代替,表示其可以变化。对于三阶张量,其各维的 mode fiber 如下所示:
切片(slice)
切片是从张量中抽取矩阵的操作。和纤维类似,我们可以保持两个下标可以改变,其余维度的下标固定,就可以得到切片,对于三阶张量的切片,我们分别记为
X
i
:
:
、
X
:
j
:
、
X
:
:
k
\pmb{X_{i::}}、\pmb{X_{:j:}}、\pmb{X_{::k}}
Xi::Xi::Xi::、X:j:X:j:X:j:、X::kX::kX::k ,分别表示水平切片、侧面切片和正面切片,如下所示:
对于一个三维的张量如下:
我们可以用数据表示为:
τ
=
t
5
t
6
t
7
t
8
t
1
t
2
t
3
t
4
\pmb{\tau}=
如果我们对张量的每个维度进行索引,如下图所示:
那么我们可以用索引表示每个元素,如下:
τ
=
t
112
t
122
t
212
t
222
t
111
t
121
t
211
t
221
\pmb{\tau}=
对于张量
τ
=
5
6
7
8
1
2
3
4
\pmb{\tau}=
其 mode - 1 矩阵 χ ( 1 ) \pmb{\chi}_{(1)} χχχ(1) 可以表示如下:
mode - 2 矩阵
χ
(
2
)
\pmb{\chi}_{(2)}
χχχ(2) 可以表示如下:
mode - 3 矩阵
χ
(
3
)
\pmb{\chi}_{(3)}
χχχ(3) 表示为:
注意:同一个 mode 下的矩阵化时,如果选择对 mode-n fiber 按不同的排列顺序组成矩阵,可能会得到不同的结果,但是只要这些排序方法时前后统一的,一般来说不会对计算带来影响。
例:假设某张量 X ∈ R 3 × 4 × 2 \mathcal{X} \in \mathbb{R}^{3 \times 4 \times 2} X∈R3×4×2 的正面切片如下:
X
:
:
1
=
[
1
4
7
10
2
5
8
11
3
6
9
12
]
,
X
:
:
2
=
[
13
16
19
22
14
17
20
23
15
18
21
24
]
X_{::1} =
根据上面的矩阵化,我们可以得到三个 mode 下的矩阵化结果如下:
X
(
1
)
=
[
1
4
7
10
13
16
19
22
2
5
8
11
14
17
20
23
3
6
9
12
15
18
21
24
]
X_{(1)} =
X
(
2
)
=
[
1
2
3
13
14
15
4
5
6
16
17
18
7
8
9
19
20
21
10
11
12
22
23
24
]
X_{(2)} =
X
(
3
)
=
[
1
2
3
4
5
…
9
10
11
12
13
14
15
16
17
…
21
22
23
24
]
X_{(3)} =
张量和矩阵相乘就是先将张量矩阵化,然后用矩阵乘以矩阵化的张量,就转变为了矩阵和矩阵的乘积。两个矩阵相乘得到一个矩阵,再按照原来的方式将矩阵还原为张量就得到了结果张量。
根据不同 mode 的矩阵化方式,我们可以计算张量在不同 mode 下和矩阵的乘积。
我们直接来看例子,如果我们有一个张量
T
=
5
6
7
8
1
2
3
4
\pmb{\mathcal{T}}=
和一个矩阵
A
=
[
a
b
c
d
]
A=
先对张量进行 mode - 1 矩阵化,得到如下结果:
T
(
1
)
=
[
1
2
5
6
3
4
7
8
]
\pmb{\mathcal{T}}_{(1)}=
则张量和矩阵相乘可以表示为:
P
=
T
×
1
A
→
P
(
1
)
=
A
T
(
1
)
=
[
a
b
c
d
]
[
1
2
5
6
3
4
7
8
]
=
[
a
+
3
b
2
a
+
4
b
5
a
+
7
b
6
a
+
8
b
c
+
3
d
2
c
+
4
d
5
c
+
7
d
6
c
+
8
d
]
之后将还原为张量:
P
=
5
a
+
7
b
6
a
+
8
b
5
c
+
7
d
6
c
+
8
d
a
+
3
b
2
a
+
4
b
c
+
3
d
2
c
+
4
d
\mathcal{P}=
注意,并不是任意 mode - n 的矩阵化的张量都是可以和矩阵相乘的,必须要保证 mode - n 的张量的行数等于要相乘矩阵的列数。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。