C++ can';用本征函数做二维压缩吗?
我试着用一个二阶张量(1x1)在最后两维上做一个三阶张量(1x1)的张量收缩。结果应该是一个向量 下面给出了一个断言:C++ can';用本征函数做二维压缩吗?,c++,eigen,C++,Eigen,我试着用一个二阶张量(1x1)在最后两维上做一个三阶张量(1x1)的张量收缩。结果应该是一个向量 下面给出了一个断言: #include <Eigen/Core> #include <unsupported/Eigen/CXX11/Tensor> #include <iostream> #include <array> #include <iostream> #include <memory> #include <th
#include <Eigen/Core>
#include <unsupported/Eigen/CXX11/Tensor>
#include <iostream>
#include <array>
#include <iostream>
#include <memory>
#include <thread>
#include <chrono>
#include <mutex>
using namespace Eigen;
using namespace std;
int main()
{
Eigen::Tensor<double, 3> tensor(1, 1, 1);
Eigen::Tensor<double, 2> tensor2(1,1);
Eigen::Tensor<double, 1> tensor1;
std::array<Eigen::IndexPair<int>, 1> product_dims;
product_dims[0] = { IndexPair<int>(1, 0) };
product_dims[1] = { IndexPair<int>(2, 1) };
auto vv = tensor.contract(tensor2, product_dims);
cerr<<"value: "<<vv<<endl;
tensor1 = vv;
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间特征;
使用名称空间std;
int main()
{
本征:张量张量(1,1,1);
本征:张量张量2(1,1);
本征::张量张量1;
std::阵列产品尺寸;
乘积_dims[0]={IndexPair(1,0)};
乘积_-dims[1]={IndexPair(2,1)};
自动vv=张量合同(张量2,产品尺寸);
cerr您的数组大小为1,因此您实际上收缩了一对维度。您应该按照以下方式创建数组:
std::array<Eigen::IndexPair<int>, 2> product_dims;
std::阵列产品尺寸;
std::array<Eigen::IndexPair<int>, 2> product_dims;