特征::矩阵XXD到双精度的转换 我一直在尝试用EGIN库重构用C++编写的RBM程序输入的数据。但是为了将重构矩阵的矩阵元素保持在某个特定的范围内,我需要对这些元素应用一个sigmoid函数。 当我这样做的时候,我得到了一个转换错误,我不知道如何解决它

特征::矩阵XXD到双精度的转换 我一直在尝试用EGIN库重构用C++编写的RBM程序输入的数据。但是为了将重构矩阵的矩阵元素保持在某个特定的范围内,我需要对这些元素应用一个sigmoid函数。 当我这样做的时候,我得到了一个转换错误,我不知道如何解决它,c++,eigen,C++,Eigen,下面是在头文件中计算的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

下面是在头文件中计算的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());

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

如果您想将函数应用于特征矩阵的每个元素,可以使用以下函数:

V = my_matrix.unaryExpr(&sigmoid);

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

如果要对特征矩阵的每个元素应用函数,可以使用该函数:

V = my_matrix.unaryExpr(&sigmoid);
这将在特征矩阵的每个元素上运行
sigmoid
函数
my_矩阵
,然后返回另一个矩阵作为结果