如何在 Eigen 中转置张量

Fs0*_*s02 3 eigen

我试图获得两个张量的矩阵乘积,其中一个张量应该在乘以 ( At*B)之前转置。

到目前为止,我在特征文档中发现的是没有任何转置和两个矩阵都转置的矩阵乘积。

我正在寻找一种方法来直接收缩两个张量,其中一个张量被转置,或者通过在收缩之前转置一个张量。

Fs0*_*s02 5

我想通了,转置效果可以使用 shuffle 方法来完成。

Eigen::Tensor<int, 2> m(3, 5);
m.setValues(
{
    {1, 2, 3, 4, 5},
    {6, 7, 8, 9, 10},
    {11, 12, 13, 14, 15}
});

Eigen::array<int, 2> shuffling({1, 0});

Eigen::Tensor<int, 2> transposed = m.shuffle(shuffling);
Eigen::Tensor<int, 2> original = transposed.shuffle(shuffling);
Run Code Online (Sandbox Code Playgroud)