为什么以下因Eigen而失败?

时间:2016-12-12 10:39:50

标签: c++ eigen

我有以下代码,我希望在tensor2和tensor3之间做外部产品,然后将结果添加到张量,但是我得到了尺寸不匹配的问题:

#include <Eigen/Core>
#include <unsupported/Eigen/CXX11/Tensor>
#include <iostream>

using namespace Eigen;
using namespace std;


int main()
{
        Eigen::Tensor<double, 2> tensor(1,9);
        Eigen::Tensor<double, 1> tensor2(1);
        Eigen::Tensor<double, 1> tensor3(9);

        tensor = tensor + tensor2 * tensor3;
}

错误是断言错误(代码编译),它出现在行tensor = tensor + tensor2 * tensor上。实际上,即使auto v = tensor2*tensor3也无效。

TensorEvaluator.h:328: Eigen::TensorEvaluator<const Eigen::TensorCwiseBinaryOp<BinaryOp, LeftArgType, RightArgType>, Device>::TensorEvaluator(const XprType&, const Device&) [with BinaryOp = Eigen::internal::scalar_product_op<double, double>; LeftArgType = const Eigen::Tensor<double, 1>; RightArgType = const Eigen::Tensor<double, 1>; Device = Eigen::DefaultDevice; Eigen::TensorEvaluator<const Eigen::TensorCwiseBinaryOp<BinaryOp, LeftArgType, RightArgType>, Device>::XprType = Eigen::TensorCwiseBinaryOp<Eigen::internal::scalar_product_op<double, double>, const Eigen::Tensor<double, 1>, const Eigen::Tensor<double, 1> >]: Assertion `dimensions_match(m_leftImpl.dimensions(), m_rightImpl.dimensions())' failed.

0 个答案:

没有答案