これは本当に簡単なことだと思いますが、解決できません。私は2つのsenond order Eigen tensorsの二重収縮をしようとしています。すべてがうまく動作しますが、二重の収縮の結果はEigen
タイプです:Eigen :: Tensorスカラー値への二重収縮
Eigen::TensorContractionOp<const std::array<Eigen::IndexPair<int>, 2ul>, const Eigen::TensorFixedSize<double, Eigen::Sizes<3l, 3l> >, const Eigen::TensorFixedSize<double, Eigen::Sizes<3l, 3l> > >
が、私はdouble
を必要としています。私はそれを印刷することはできますが、それを使って作業することはできません。
コードは以下の
#include <iostream>
#include <unsupported/Eigen/CXX11/Tensor>
int main()
{
auto tensor1 = Eigen::TensorFixedSize<double, Eigen::Sizes<3,3>>();
tensor1.setValues({ {1, 0, 0},
{0, 1, 0},
{0, 0, 1} });
std::cout << "tensor1:\n" << tensor1 << "\n";
auto tensor2 = Eigen::TensorFixedSize<double, Eigen::Sizes<3,3>>();
tensor2.setValues({ {2, 0, 0},
{0, 2, 0},
{0, 0, 2} });
std::cout << "tensor2:\n" << tensor2 << "\n";
Eigen::array<Eigen::IndexPair<int>, 2> contraction_pair0011
= { Eigen::IndexPair<int>(0, 0), Eigen::IndexPair<int>(1, 1)};
auto tensor1_tensor2 = tensor1.contract(tensor2, contraction_pair0011);
std::cout << "tensor1 : tensor2:\n" << tensor1_tensor2 << "\n";
// double value = tensor1_tensor2; // won't compile
}
である私は、機能を必要とするか、結果の値を取得するために呼び出す、誰かが私を助けることができる願っています。
乾杯ジョナス