【发布时间】:2016-11-27 14:13:54
【问题描述】:
在 eigen 中,可以很容易地使用以下方法进行张量收缩:
Tensor<double, 1> tensor1;
Tensor<double, 2> tensor2;
// fill with data so that
// tensor1 is of dimensions [10] and tensor2 of dimensions [5,10]
std::array<Eigen::IndexPair<int>, 1> product_dims1 = { IndexPair<int>(1, 0) };
auto tensor = tensor2.contract(tensor1, product_dims1);
// now tensor is of dimensions [5]
我正在寻找一种与收缩相反的方法,这意味着它需要两个张量 A 和 B,例如尺寸为 5 x 10 和 3 x 2,并定义一个尺寸为 5 x 10 x 3 x 2 的新张量 C这样
C_ijkl = A_ij * B_kl
如有必要,我可以轻松编写这样的方法,但我觉得如果我使用本机特征方法会更加优化。我还希望能够使用 GPU 支持,如果您使用本机方法,这对于 eigen 来说非常容易。
谢谢。
【问题讨论】:
-
你试过
*操作符吗? -
@Kerrek 这不起作用,请参阅此处:stackoverflow.com/questions/41098944/…