问题描述
我正在使用神经网络库,我想使用Eigen处理模型背后的向量和矩阵数学,但是有人告诉我,我不应该在最终的api中公开Eigen类型,因为网络基本上将获得向量作为输入并返回向量作为输出,我当时正在考虑创建一个包装Eigen :: VectorXf的类(也许是Tensor),但是我真的不知道如何在这样的Tensors上进行操作来保留Eigen优化
例如opennn库也使用Eigen(我认为),并且其Tensor类型是从std :: vector继承的,我还没有找到如何将其转换为Eigen的方法(也许涉及Map?)
解决方法
我看到围绕Eigen类型编写一个瘦包装的唯一原因是您是否需要灵活性,以便稍后更改实现。
如果没有此要求,则应公开本征类型。这是您的用户会熟悉的API,您可以避免类型和本征张量之间的任何不必要的转换(副本)。