微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法推导出 Eigen::Matrix 的模板参数

如何解决无法推导出 Eigen::Matrix 的模板参数

当我尝试使用 MSVC 19.latest 编译以下函数 (forward) 时,我收到以下错误消息。

'Eigen::Matrix<float,ann_output_len<LayerNodeConfig...>::value,1,_Rows,1> forward(const  
 ArtificialNeuralNetwork<InputSize,LayerNodeConfig...> &,const Eigen::Matrix<float,Rows,1> &)':  
 Could not deduce template argument for 'const Eigen::Matrix<float,1> &' from  
 'Eigen::Matrix<float,2,1>'

forward 界面

template<int InputSize,int ... LayerNodeConfig>
auto forward(const ArtificialNeuralNetwork<InputSize,LayerNodeConfig...>& ann,const RL::Arrayf<InputSize>& input)     
  -> typename ANN::output_t<LayerNodeConfig...>

main函数

  RL::Arrayf<2> X;
  auto Y = forward(sampling_policy,X);

现在我不明白的是为什么编译器不能用 2 代替 Rows_Rows

任何见解表示赞赏。 您可以使用此链接 https://godbolt.org/z/7Mj5ee 在 Godbolt.org 中尝试完整代码,如果您愿意,可以尝试自己编译。

注意:我尝试用最新的 GCC 编译器编译相同的代码并编译。

更新 - 2021 年 3 月 6 日: 我通过更改函数 forward 的接口以接受 Eigen::DenseBase<Derived> 而不是 RL::Arrayf<InputSize>解决方法。 任何有兴趣的人都可以在这里阅读更多相关信息,https://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。