我有以下代码,我希望在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.