张量的恒等式和关系

张量之间有许多数学关系、恒等式和联系。这里展示了这些恒等式,并展示了张量工具箱的多功能性。以下所列的主张参考了以下报告:

T.G. Kolda,“高阶分解的多线性算子”,技术代表SAND2006-2081,桑迪亚国家实验室,2006年4月,http://csmr.ca.sandia.gov/~tgkolda/pubs/index.html#SAND2006-2081

内容

n模积性质

创建一些数据。

Y = tenrand([4 3 2]);A = rand(3,4);B = rand(3,3);

提案3.4(a):不同模式下的乘法顺序无关。

$$(Y \times_1 A) \times_2 B = (Y \times_2 B) \times_1 A$$

X1 = ttm(ttm(Y,A,1), B, 2);%<——Y x_1 A x_2 BX2 = ttm(ttm(Y,B,2), A, 1);%<——Y x_2 B x_1 A范数(X1 - X2)%<——差值为零
Ans = 4.6278e-16

n模积和矩阵化

生成一些要使用的数据。

Y = tenrand([5 4 3]);A = rand(4,5);B = rand(3,4);C = rand(2,3);U = {a, b, c};

提案3.7a: n模乘法可以用矩阵化张量表示。

$ $ X = Y \ times_n U \ Leftrightarrow间{(n)} = UY_ {(n)} $ $

n = 1:ndims(Y) X = ttm(Y,U,n);%<——X = Y x_n U{n}Xn = U{n} * tenmat(Y,n);%<——Xn = U{n} * Ynnorm(tenmat(X,n) - Xn)% <——应该为零结束
Ans = 0 Ans = 0 Ans = 0

提案3.7b:我们可以用不同的方法进行矩阵化,但仍然是等价的。

X = ttm(Y,U);%<——X = Y x_1 A x_2 B x_3 CXm1 = kron(B,A)*tenmat(Y,[1 2])*C';%<——克罗内克产品版本Xm2 = tenmat(X,[1 2]);%<——矩阵化版本范数(Xm1 - Xm2)% <——应该为零x1 = B * tenmat(Y,2,[3 1]) * kron(A,C)';%<——克罗内克产品版本Xm2 = tenmat(X,2,[3 1]);%<——矩阵化版本范数(Xm1 - Xm2)% <——应该为零Xm1 = tenmat(Y,[],[1 2 3]) * kron(kron(C,B),A)';%<——通过Kronecker向量化Xm2 = tenmat(X,[],[1 2 3]);%<——通过矩阵化向量化范数(Xm1 - Xm2)
Ans = 1.6616e-15 Ans = 2.1756e-15 Ans = 2.8087e-15

两个张量之差的模

3.9题:对于张量X和Y,我们有:

$$\| x - y \|^2 = \| x \|^2 + \| y \|^2 - 2< x, y > $$

X = tenrand([5 4 3]);Y = tenrand([5 4 3]);以下2个结果应该是相等的规范(X - Y)√规范(X) ^ 2 - 2 * innerprod (X, Y) +规范(Y) ^ 2)
Ans = 2.9316 Ans = 2.9316

这种关系使得比较两个不同张量对象之间的差的范数更加方便。想象一下如果我们有一个sptensor和一个ktensor我们想要差分的范数,例如,它可能需要用于检查收敛性,但要将其转换为全(密)张量是非常昂贵的。因为innerprod而且规范为所有类型的张量对象定义,这是一个方便的公式。

X = sptensor(X);Y = ktensor({[1:5]',[1:4]',[1:3]'});以下2个结果应该是相等的规范(全(X)全(Y)√6(规范(X) ^ 2 - 2 * innerprod (X, Y) +规范(Y) ^ 2)
Ans = 148.5941 Ans = 148.5941

塔克张量性质

Tucker算子的性质直接来自于n模乘法的性质。

初始化数据Y =张量(1:24,[4 3 2]);A1 =重塑(1:20,[5 4]);A2 =重塑(1:12,[4 3]);A3 =重塑(1:6,[3 2]);A = {a1, a2, a3};B1 =重塑(1:20,[4 5]);B2 =重塑(1:12,[3 4]);B3 =重塑(1:6,[2 3]);B = {b1, b2, b3};

命题4.2

X = ttensor(ttensor(Y,A),B)
core是一个大小为5 × 4 × 3的ttensor .core是一个大小为4 × 3 × 2的ttensor .core(:,:,1) = 15 9 2 6 10 3 7 11 4 8 12 X.core.core(:,:,2) = 13 17 21 14 18 22 15 19 23 16 20 24 X.core。U{1} = 16 11 16 2 7 12 17 3 8 13 18 4 9 14 19 5 10 15 20 X.core. U{1} = 16 11 16 2 7 12 17 3 8 13 18U{2} = 1 5 9 2 6 10 3 7 11 4 8 12 X.core。U{3} = 14 2 5 3 6 x.u {1} = 15 9 13 17 2 6 10 14 18 3 7 11 15 19 4 8 12 16 20 x.u {2} = 14 7 10 2 5 8 11 3 6 9 12 x.u {3} = 13 5 2 4 6
Ab = {b1 * a1, b2 * a2, b3 * a3};Y = ttensor(Y,AB)
Y的ttensor大小4 x 3 x 2 Y.core是一个张量的大小4 x 3 x 2 Y.core (:,: 1) = 1 5 9 2 6 10 3 7 11 4 8 12 Y.core(:,: 2) = 13 17日21日14 18 22日15日19日23日16 20 24 Y.U {1} = 175 400 625 850 190 440 690 940 205 480 755 1030 220 520 820 1120 Y.U {2} = 70 158 246 80 184 288 90 210 330 Y.U {3} = 22 49 28 64
规范(全(X)全(Y))%<——应该为零
Ans = 0

命题4.2 b

Y =张量(1:24,[4 3 2]);X = ttensor(Y,A);Apinv = {pinv(A1),pinv(A2),pinv(A3)};Y2 = ttensor(full(X),Apinv);规范(全(Y)全(Y2))%<——应该为零
Ans = 3.8576e-13

命题4.2摄氏度

Y =张量(1:24,[4 3 2]);兰特(“状态”, 0);Q1 = orth(rand(5,4));Q2 = orth(rand(4,3));Q3 = orth(rand(3,2));Q = {q1, q2, q3};X = ttensor(Y,Q)
X是大小的ttensor 5 X 4 X 3 X.core是一个张量的大小4 X 3 X 2 X.core (:,: 1) = 1 5 9 2 6 10 3 7 11 4 8 12 X.core(:,: 2) = 13 17日21日14 18 22日15日19日23日16 20 24 X.U {1} = -0.4727 0.5608 0.0275 -0.3954 -0.4394 -0.4243 0.3178 0.5707 -0.4659 -0.6116 -0.1037 -0.5982 -0.4209 0.3259 0.5458 0.1138 -0.4350 0.1587 -0.7679 0.3837 X.U {2} = -0.2570 0.1257 0.8908 -0.3751 -0.2111 0.2636 -0.4640 -0.7988 -0.1591 -0.7602 0.5492 -0.3341 X.U {3} = -0.3907 -0.0625 -0.8045 - -0.4616 -0.4473 - 0.8849
Qt = {Q1',Q2',Q3'};Y2 = ttensor(full(X),Qt)范数(full(Y)-full(Y2))%<——应该为零
Y2是大小为4 × 3 × 2y2的t张量。core是一个5 x 4 x 3的张量Y2.core(:,:,1) = 1.4195 -0.0317 -1.4127 -0.3848 -0.7708 0.2767 1.3323 -0.0536 - 8.3369 -2.1970 -3.0735 0.1529 3.2424 0.9267 2.9652 0.0889 -2.6130 -0.6316 Y2.core(:,:,2) = 4.6979 -0.3995 -5.3170 -1.6004 -2.2186 0.8006 3.8440 1.4349 28.9023 -2.1266 -31.9901 -9.4788 -10.0638 1.0545 11.8230 - 3.6490 10.0122 -0.4854 -10.5344 -3.0047 Y2.core(:,:,3) = -3.4733 -1.6360 -0.6138 -21.7522 5.7319 33.0762 11.7190 7.2102 -1.9498-11.0723 -3.9398 -7.8266 2.0225 11.8142 4.1724 y2。U{1} = -0.4727 -0.4394 -0.4659 -0.4209 -0.4350 0.5608 -0.4243 -0.6116 0.3259 0.1587 0.0275 0.3178 -0.1037 0.5458 -0.7679 -0.3954 0.5707 -0.5982 0.1138 0.3837 y2。U{2} = -0.2570 -0.3751 -0.4640 -0.7602 0.1257 -0.2111 -0.7988 0.5492 0.8908 0.2636 -0.1591 -0.3341 y2。U{3} = -0.3907 -0.8045 -0.4473 -0.0625 -0.4616 0.8849 ans = 3.8190e-14

Tucker算子和矩阵化张量

塔克算符在矩阵化张量和克罗内克积方面也有不同的表达式。命题4.3

Y =张量(1:24,[4 3 2]);A1 =重塑(1:20,[5 4]);A2 =重塑(1:12,[4 3]);A3 =重塑(1:6,[3 2]);A = {a1, a2, a3};X = ttensor(Y,A)n = 1:ndims(Y) rdims = n;cdims = setdiff(1:ndims(Y),rdims);Xn = {n} * tenmat (Y, rdims, cdims) * kron(一个{cdims(2)},一个{cdims (1)}) ';norm(tenmat(full(X),rdims,cdims) - Xn)% <——应该为零结束
X是大小的ttensor 5 X 4 X 3 X.core是一个张量的大小4 X 3 X 2 X.core (:,: 1) = 1 5 9 2 6 10 3 7 11 4 8 12 X.core(:,: 2) = 13 17日21日14 18 22日15日19日23日16 20 24 X.U {1} = 1 6 11 16 2 7 12 17 3 8 13 18 4 9 14 19 5 10 15 20 X.U {2} = 1 5 9 2 6 10 3 7 11 4 8 12 X.U {3} = 1 4 2 5 3 6 ans = 0 = 0岁= 0

塔克因子的正交化

命题4.4

Y =张量(1:24,[4 3 2]);A1 = rand(5,4);A2 = rand(4,3);A3 = rand(3,2);A = {a1, a2, a3};X = ttensor(Y,A)
X是大小的ttensor 5 X 4 X 3 X.core是一个张量的大小4 X 3 X 2 X.core (:,: 1) = 1 5 9 2 6 10 3 7 11 4 8 12 X.core(:,: 2) = 13 17日21日14 18 22日15日19日23日16 20 24 X.U {1} = 0.2026 0.3795 0.3046 0.5417 0.6721 0.8318 0.1897 0.1509 0.8381 0.5028 0.1934 0.6979 0.0196 0.7095 0.6822 0.3784 0.6813 0.4289 0.3028 0.8600 X.U {2} = 0.8537 0.8216 0.3420 0.5936 0.6449 0.2897 0.4966 0.8180 0.3412 0.8998 0.6602 0.5341 X.U {3} = 0.7271 0.5681 0.3093 - 0.3704 0.8385 - 0.7027
[Q1,R1] = qr(A1);[Q2,R2] = qr(A2);[Q3,R3] = qr(A3);R = {r1, r2, r3};Z = ttensor(Y,R);范数(X) -范数(Z)%<——应该为零
Ans = 0

Kruskal操作符属性

命题5.2

A1 =重塑(1:10,[5 2]);A2 =重塑(1:8,[4 2]);A3 =重塑(1:6,[3 2]);K = ktensor({A1,A2,A3});B1 =重塑(1:20,[4 5]);B2 =重塑(1:12,[3 4]);B3 =重塑(1:6,[2 3]);X = ttensor (K, {B1、B2、B3}) Y = ktensor ({B1 * A1, B2 * A2, B3 * A3});范数(满(X) -满(Y))%<——应该为零
X是大小为4 X 3 X 2的t张量。X.core是大小为5 X 4 X 3的k张量。U{1} = 1 6 2 7 3 8 4 9 5 10 X.core。U{2} = 1 5 2 6 3 7 4 8 X.core。U{3} = 14 2 5 3 6 X.U{1} = 15 9 13 17 2 6 10 14 18 3 7 11 15 19 4 8 12 16 20 X.U{2} = 14 7 10 2 5 8 11 3 6 9 12 X.U{3} = 13 5 2 4 6 ans = 0

提案5.3a(第二部分)

A1 =重塑(1:10,[5 2]);A2 =重塑(1:8,[4 2]);A3 =重塑(1:6,[3 2]);A = {a1, a2, a3};X = ktensor(A);rdims = 1:ndims(X);Z = double(tenmat(full(X), rdims, []));Xn = khatrirao(A{rdims},“r”) * ones(长度(X.lambda),1);范数(Z - Xn)% <——应该为零
Ans = 0
cdims = 1:ndims(X);Z = double(tenmat(full(X), [], cdims));Xn = ones(length(X.lambda),1)' * khatrirao(A{cdims},“r”)”;范数(Z - Xn)% <——应该为零
Ans = 0

命题5.3 b

A1 =重塑(1:10,[5 2]);A2 =重塑(1:8,[4 2]);A3 =重塑(1:6,[3 2]);A = {a1, a2, a3};X = ktensor(A);n = 1:ndims(X) rdims = n;cdims = setdiff(1:ndims(X),rdims);Xn = khatrirao(A{rdims}) * khatrirao(A{cdims},“r”)”;Z = double(tenmat(full(X),rdims,cdims));范数(Z - Xn)% <——应该为零结束
Ans = 0 Ans = 0 Ans = 0

提案5.3a(第一部分)

X = ktensor(A);n = 1:ndims(X) cdims = n;rdims = setdiff(1:ndims(X),cdims);Xn = khatrirao(A{rdims},“r”) * khatrirao(A{cdims})';Z = double(tenmat(full(X),rdims,cdims));范数(Z - Xn)% <——应该为零结束
Ans = 0 Ans = 0 Ans = 0

Kruskal算子的范数

k张量的范数有一种特殊的形式,因为它可以简化为N个大小为R x R的矩阵的Hadamard积的项之和

A1 =重塑(1:10,[5 2]);A2 =重塑(1:8,[4 2]);A3 =重塑(1:6,[3 2]);A = {a1, a2, a3};X = ktensor(A);M = ones(size(A{1},2), size(A{1},2));i = 1: number (A) M = M .* (A{i}'*A{i});结束norm(X) -√(sum(M(:)))%<——应该为零
Ans = 0

Kruskal算子与张量的内积

一个k张量与一个张量的内积产生了命题5.5

X =张量(1:60,[5 4 3]);A1 =重塑(1:10,[5 2]);A2 =重塑(2:9,[4 2]);A3 =重塑(3:8,[3 2]);A = {a1, a2, a3};K = ktensor(A);v = khatrirao(A,“r”) * ones(size(A{1},2),1);以下2个结果应该是相等的双(tenmat (X, 1: ndims (X ),[]))' * v innerprod (X, K)
Ans = 935340 Ans = 935340