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