我想要一个基本上看起来像的Eigen C ++函数:
void multiplyAndContract(Tensor& a, Tensor& b, Tensor &c)
简单地将b和c与坐标相乘(它们具有相同的尺寸)然后收缩a与b和c的结果相乘(比如b * c和a上的第一个维度)。
b和c通常是矢量维度(意思是等级1的张量)。
我不确定如何使用张量与Eigen进行坐标乘法(没有cwiseProduct,似乎就像矩阵一样),而且我也不知道如何做到这一点,所以它是最多的在创建临时张量方面有效率。
我很乐意为代码提供一些示例,它不必完全正常运行,而只是参考如何做到这一点。
答案 0 :(得分:0)
您可以简单地使用*
运算符进行系数乘法运算。
Tensor a;
Tensor b;
Tensor c;
Eigen::array<Eigen::DenseIndex, 1> contraction_pair;
contraction_pair[0] = Eigen::IndexPair<Index>(0, 0);
Tensor result = (b * c).contract(a, contraction_pair);