包装 Eigen::Vector 类型

Posted

技术标签:

【中文标题】包装 Eigen::Vector 类型【英文标题】:Wrapping Eigen::Vector type 【发布时间】:2020-10-26 16:39:13 【问题描述】:

我正在开发一个神经网络库,我想使用 Eigen 来处理模型背后的向量和矩阵数学,但有人告诉我,我不应该在最终的 api 中公开 Eigen 类型,因为网络基本上是将向量作为输入并返回向量作为输出.

有没有办法做到这一点,或者我应该改变我的方法?

例如 OpenNN 库也使用 Eigen(我认为),它的 Tensor 类型是从 std::vector 继承的,我还没有找到它是如何转换为 Eigen 的(可能涉及 Map?)

【问题讨论】:

"but I've been told that I should't expose Eigen types in the final api" ...为什么? ***.com/questions/10576550/… 如果只使用 Eigen::VectorXf 真的没问题,那么我比你更快乐 太好了,你能不能把它写成答案,这样我就可以把它标记为解决方案? 【参考方案1】:

我认为围绕 Eigen 类型编写精简包装器的唯一原因是,如果您需要在以后灵活地更改实现。

如果您没有此要求,则应公开 Eigen 类型。这是您的用户将熟悉的 API,您将避免在您的类型和特征张量之间进行任何不必要的转换(副本)。

【讨论】:

以上是关于包装 Eigen::Vector 类型的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 std::Vector 存储到 Eigen::Vector 时出错 [重复]

Eigen::Vector3f 对齐

Visual Studio 2012 中 Eigen 类型向量的自动向量化效果不佳

g2oEigenMat矩阵类型转换

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

eigen 中四元数欧拉角旋转矩阵旋转向量