【问题标题】:conversion of Eigen::matrixXd to Double将 Eigen::matrixXd 转换为 Double
【发布时间】:2016-01-14 11:03:14
【问题描述】:

我一直在尝试借助 Eigen 库重建输入到我的 RBM 程序中的输入数据,该程序是用 C++ 编写的。但是为了将重构矩阵的矩阵元素保持在某个特定范围内,我需要对这些元素应用 sigmoid 函数。 当我这样做时,我得到一个转换错误,我不知道如何绕过它。

这是我在头文件中计算的 Sigmoid 函数:

       double sigmoid(double x) 
            {
                return 1.0 / (1.0 + exp(-x));
            }

这是我计算重建的方法:

         MatrixXd V;
         double well[36];
         Map<MatrixXd>( well, V.rows(), V.cols() ) = V;
         V = sigmoid(H * result3Eigen.transpose() + onesmat*result2Eigen.transpose());

最后这里是我在编译代码时收到的错误消息:

        error C2664:'utils::sigmoid':cannot convert parameter 1 from 'Eigen::MatrixXd' 
        to 'double'

感谢您提供解决问题的任何提示。

【问题讨论】:

    标签: c++ eigen


    【解决方案1】:

    如果你想对特征矩阵的每个元素应用一个函数,你可以使用unaryExpr函数:

    V = my_matrix.unaryExpr(&sigmoid);
    

    这将对特征矩阵my_matrix 的每个元素运行sigmoid 函数,然后返回另一个矩阵作为结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-26
      • 1970-01-01
      • 2015-04-19
      • 2013-03-07
      • 1970-01-01
      • 1970-01-01
      • 2022-08-08
      • 1970-01-01
      相关资源
      最近更新 更多