包装 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 时出错 [重复]
Visual Studio 2012 中 Eigen 类型向量的自动向量化效果不佳