65.9K
CodeProject 正在变化。 阅读更多。
Home

张量模板

starIconstarIconstarIconstarIconstarIcon

5.00/5 (6投票s)

2001年6月27日

viewsIcon

108630

downloadIcon

1958

一个模板类,允许你创建任意维度的张量。处理任意张量的卷积等等。

引言

Tensor 类是在 1997 年学习模板期间编写的(我在我的档案中发现了它)。

但我从那时起就没见过这样的类。所以我认为它对学生来说可能有用。我编写它的主要原因 - 是为了对任意维度的张量进行卷积。此外,您可以使用 operator[] 获取和使用任何子张量,例如 Sample Image 可以这样写:

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

© . All rights reserved.