张量模板





5.00/5 (6投票s)
2001年6月27日

108630

1958
一个模板类,允许你创建任意维度的张量。处理任意张量的卷积等等。
引言
Tensor
类是在 1997 年学习模板期间编写的(我在我的档案中发现了它)。
但我从那时起就没见过这样的类。所以我认为它对学生来说可能有用。我编写它的主要原因 - 是为了对任意维度的张量进行卷积。此外,您可以使用 operator[]
获取和使用任何子张量,例如 可以这样写:
Tensor2 qq,a1,a2,aa; convolution(aa["li"],a2["lj"],qq["ij"]); convolution(qq["kl"],a1["ki"],aa["li"]);
Using
演示项目展示了张量的用法。您可以
声明和初始化张量(您应该指定维度和索引范围)。
Tensor2 result2(2); Tensor4 tt(3); // 4 - dimensions indexes can be 0-2 or "1"-"3" Tensor2 t1(2); t1[0][0] = 1.0; t1[1][0] = 2.0; t1[0][1] = 3.0; t1[1][1] = 4.0;
卷积张量 - 请注意,您可以使用不同的维度和索引中的一个或多个常量。
convolution(result5["2i"],t3["2"],t2["i3"]); convolution(result6["ij"],t1["ja"],t2["ai"]);
使用一些算术运算。
result3 = t1 + t2*2;
打印张量的部分或全部。
t4["ijkl"].printf(std::cout); result5["1j"].printf(std::cout);
平均张量。
Tensor2 t[2]; double q[2]; t2.averaging(&t[0],q,2);
反转具有索引 (0,1) 的 4 维张量。
Tensor4 t(2),ti(2); ti = inverse(t);
待办事项列表
很容易实现更多张量操作(不同的乘法等)。如果您需要,请告诉我。
注意
请务必查看我的网站,该网站更有可能包含更新和测试版本:http://www.zmike.net