【问题标题】:Sigmoid function using Jama math library no output in sigmoidfunction使用 Jama 数学库的 Sigmoid 函数在 sigmoidfunction 中没有输出
【发布时间】:2013-12-12 14:28:46
【问题描述】:

我正在尝试使用 Jama 库编写我的 sigmoid 函数。我不确定我的代码是否有效,所以我在我的测试函数中调用了我的sigmoidFunction

public matrix sigmoidFunction() {
    matrix theta = new matrix(x_theta,m);
    matrix X = new matrix(x);
    matrix theta_transpose = theta.transpose();
    matrix HX = theta_transpose.times(X);
    double[][] hx = HX.getArray();
    int m = HX.getRowdimension();
    int n = HX .getColdimension();

    for (int i = 0; i < m; i++) {
        for (int j = 0; j<n; j++) {
             hx[i][j] = 1 / (1 + StrictMath.exp(hx[i][j]));
        }
    }
    matrix sigmoid = new matrix(hx);
return sigmoid;
}

但是,当我运行它时,没有输出。好像我的sigmoidFunction 里面没有任何价值。我不知道为什么。

public static void main(String[] args) {

    double[ ][ ] x={ {1,2}, {1,2}, {1,2} ,{1,2}, {1,2} };
        double[] theta = {0.5,0.005};
    double[] y = {1,1,0,1,0};

    LogisticRegression l = new LogisticRegression(x,theta,y);

    System.out.println(l.sigmoidFunction().getArray()[1]);

}

【问题讨论】:

  • 你没有将你的 theta 和 x 传递给 sigmoidFunction
  • 但我在构造函数中传递了它
  • 你在你的函数中定义新矩阵。打印出来看看你的 sigmoidFunction 中的 X 和 theta 是否有值
  • 有效!谢谢!我忘了在 sigmoid 函数中定义 X 和 theta

标签: java machine-learning linear-algebra jama


【解决方案1】:

您在函数中定义新矩阵。打印出来看看你的sigmoidFunction 中的Xtheta 是否有值。其实你需要在函数内部定义Xtheta

【讨论】:

  • 我按照你说的做了,但是当我运行它时输出错误,它应该是 0.51(我在 mathlab 中完成),但它返回 0.375。
  • thetaX 应该是 0.51,sigmoid(thetaX) 是 0.375。顺便说一句,我认为你的 sigmoid 函数应该是 1/(1+exp(-h)) 而不是 1/(1+exp(h))
猜你喜欢
  • 2021-04-25
  • 2017-05-15
  • 2017-10-08
  • 1970-01-01
  • 2019-02-05
  • 2020-03-18
  • 1970-01-01
  • 2019-10-12
  • 2021-02-05
相关资源
最近更新 更多