eigen3相关内容

为 ARM 交叉编译时未初始化特征向量

我在使用 arm-linux-gnueabihf-g++(来自 Linaro 的 gcc 4.8 版)的交叉编译程序上使用 Eigen3.目标平台是来自gumstix 的duovero,使用Poky 发行版- ARMv7.当我使用 Eigen 代码运行程序时,我在 Eigen 对象上得到了非常奇怪的值(请参阅本文末尾的输出示例). 我试图关闭矢量化,我已经使用了所有这些标志 -marm-m ..
发布时间:2021-11-17 22:33:31 其他开发

如何将 2D Eigen::Tensor 更改为 Eigen::Matrix

看起来很简单.我原以为可以进行某种类型的转换,但我似乎找不到任何相关文档. 虽然我在我的应用程序中找到了避免使用 Eigen::Matrix 类的方法,但 TensorFlow 仅适用于 Eigen::Tensor,而我使用的另一个库仅具有直接使用 Eigen::Matrix 的功能.如果我可以将张量转换为矩阵并使用它,那么代码可读性将非常棒. 编辑:似乎 TensorFlow 确实有 ..
发布时间:2021-09-05 18:56:47 其他开发

如何在 Eigen3 中重塑张量?

我从 C++ 中的 tensorflow 会话的输出向量中得到了一些 Eigen::TensorMap.我想对 Eigen::TensorMap 做一些操作(reshape 和 concat 等). 但是,由于一些奇怪的错误,我的代码无法编译.我试图用纯 Eigen3 代码重现它. #include 使用本征::张量;使用 Eigen::TensorMap;使用 Eigen::Tensor ..
发布时间:2021-09-05 18:34:25 其他开发

Eigen::Tensor,如何从张量访问矩阵

我有以下特征张量: Eigen::Tensor米(3,10,10); 我想访问第一个矩阵.在 numpy 我会这样做 m(0,:,:) 我将如何在 Eigen 中执行此操作 解决方案 您可以使用 .slice(...) 或 .chip(...) 访问张量的一部分.这样做是为了访问第一个矩阵,相当于 numpy m(0,:,:): Eigen::Tensor米(3,10,10);/ ..
发布时间:2021-09-05 18:33:24 其他开发

具有 mkl 后端的特征库的按系数数组操作的性能

我正在将一个带有大量系数数组运算的 Matlab 算法移植到 C++,它看起来像这个例子,但通常要复杂得多: Eigen::Arraytx2(12);tx2<<1、2、3、4、5、6;Eigen::ArrayTX1(12);tx1<<7、8、9、10、11、12;Eigen::Arrayx = (tx1 + tx2)/2; 结果证明 C++ 代码明显比 Matlab 慢(大约 20%).因此, ..
发布时间:2021-06-15 19:44:38 其他开发

本征C++;就地矩阵乘法

使用 Eigen C++ 矩阵库,如何有效地将 n x n 矩阵 A 乘以 n x m 矩阵 B并将结果存储在 A 中?也就是说,我怎样才能避免生成一个临时的 n x m 矩阵并存储结果直接在B? 对于 m 非常大的应用程序(例如 100000)比 n(例如 3),这绝对有意义,因为它避免了超大数组的应用. 以下代码,我无法开始工作: B.noalias() = A * B; 我 ..
发布时间:2021-06-15 19:29:31 其他开发

在 ARM/Raspberry PI 上的多个内核上运行特征密集矩阵乘法时性能下降

我发现在 ARM 32 或 64 位 Raspberry PI 4 上并行运行 2 或 3 个线程上的特征密集矩阵乘法时,性能显着下降. 我无法理解这个问题,因为 RPI 4 有 4 个内核,理论上可以在真正的并行处理中处理多达 4 个线程.此外,我无法在我的笔记本电脑(英特尔 I9 4 核处理器)上重现该问题,无论我并行运行 1 个、2 个还是 3 个线程,每个线程都保持相同的性能. ..
发布时间:2021-06-04 20:39:25 其他开发

在Eigen3中实现Bartels–Stewart算法?

过去当我需要解 Sylvester 方程时,AX + XB = C,我使用了 scipy 的函数,solve_sylvester [1],显然是通过使用Bartels-Stewart算法将事物分解为上三角形式,然后使用 lapack 求解方程来实现的. 我现在需要使用 eigen 求解方程. eigen 提供了一个函数 matrix_function_solve_triangular_syl ..
发布时间:2021-05-29 20:54:01 其他开发

如何在Eigen中使用自定义预处理器

我正在尝试将自定义的预处理器用于Eigen的迭代求解器(例如CG).具体来说,我必须多次解决类似的问题:矩阵略有变化,但保持接近均值矩阵.我想计算我的均值矩阵的Cholesky分解,然后将其用作前置条件. 我的想法是这样的: ConjugateGradient求解器(mea ..
发布时间:2021-05-03 20:11:31 其他开发

在std向量中将元素分配给Eigen :: Vector2d会引发错误

我浏览了几篇StackOverflow帖子,但是没有发现这样的错误.我试图编写一个简单的类,对本征向量和矩阵进行一些操作.我创建了一个名为MyClass的类,它有一个名为MyMethod的方法.它的代码如下 void MyClass :: MyMethod(Eigen :: Vector4f X,std :: vector& pixelIndices,s ..
发布时间:2021-05-03 20:11:17 其他开发

避免在使用Eigen分解稀疏矩阵上进行动态内存分配

在我的应用程序中,除类构造函数外,我需要避免动态内存分配(类似malloc).我有一个稀疏的半定矩阵M,其元素在程序执行过程中会发生变化,但它具有固定的稀疏性模式. 为了尽可能快地求解许多线性系统M * x = b,其想法是在类构造函数中使用就地分解,如 cs_symperm_noalloc 是CSparse库的 cs_symperm 函数的次要重构. 这似乎行得通,至少与我的特 ..
发布时间:2021-05-03 20:11:00 其他开发

本征垂直堆叠行到矩阵

我想通过垂直堆叠 2N 1x9创建一个大小为 2N x 9 的矩阵,其中 N 是动态值矩阵. 这就是我尝试做的事情. 使用CoefficientMatrix = Eigen :: Matrix ..
发布时间:2021-05-03 20:10:35 其他开发

调整Eigen :: Ref大小的解决方法

我想使用Eigen :: Ref使用Eigen :: Matrix参数来具有非模板函数.我的问题是在这些函数中,我可能必须调整Eigen :: Ref引用的矩阵的大小.我知道,一般而言,不应调整Eigen :: Ref的大小,因为它可以映射到表达式或矩阵块,但就我而言,我确定Eigen :: Ref背后的内容是Eigen :: Matrix. 为了说明这一点: #include"Eige ..
发布时间:2021-05-03 20:10:26 其他开发

识别本征中的临时对象创建

正如Eigen C ++库中的文档指出的那样,要在计算时间方面获得最大性能,我们需要尽可能避免使用临时对象.在我的应用程序中,我处理动态大小矩阵.我想知道在计算中创建临时矩阵.有什么通用方法可以识别临时矩阵的创建吗? 例如 Eigen :: MatrixXf B,C,D;.... B,C,D的一些初始化Eigen :: MatrixXf A = B * C + D; 在实现此操作时如 ..
发布时间:2021-04-20 18:40:34 其他开发

Eigen乘以小矩阵的速度慢吗?

我写了一个函数,将10x10维的本征矩阵相乘.然后,我编写了一个天真的乘法函数 CustomMultiply ,它比Eigen的实现快了2倍. 我尝试了几个不同的编译标志,例如-O2和-O3,它们没有什么不同. #includeconstexpr int尺寸= 10;使用Matrix = Eigen :: Matrix ..
发布时间:2021-04-19 21:01:56 其他开发

如何在Eigen中使用stl迭代器?

我正在尝试在项目中使用Library Eigen,并且必须对向量进行排序.我尝试遵循该文档,它说该库应与STL迭代器和算法一起以可预测的方式工作 #include #include #include #include int main() { Eigen::Ar ..
发布时间:2021-02-09 19:37:32 其他开发

本征:可修改的自定义表达式

我正在尝试使用Eigen实现可修改的自定义表达式,类似于此问题。基本上,我想要的是与教程中的索引示例相似的东西,但是为选定的系数分配新值的可能性。 正如上面提到的问题中公认的答案所示,我研究了 Transpose 的实现,并尝试了许多事情,但没有成功。基本上,我的尝试失败了,并出现如下错误:'Eigen :: internal :: evaluator :: eva ..
发布时间:2020-10-27 23:57:05 其他开发

了解本征中的SolveInPlace操作

在Eigen3.3.7中使用LLT来加快应用程序中矩阵逆运算的速度时,我试图探索“ solveInPlace()”函数的选项。 我使用以下代码对其进行了测试。 int main() { const int M = 3; Eigen :: Matrix R = Eigen :: Matrix ..
发布时间:2020-10-27 23:55:28 其他开发