Сигмоидная функция отличается результатом от Matlab


Как закодировать сигмоидную функцию в Java?, мой вывод для hx = [0.51,0.51,0.51,0.51,0.51] является sigmoid =[1.6,1.6,1.6,1.6,1.6], и когда я делаю это в Matlab, значение сигмоида равно [ 0.6248 ,0.6248, 0.6248, 0.6248]:

public double[] sigmoidFunction() {
    int i;
    double[] sigmoid = new double[x_theta.length];
    for(i=0;i<x_theta.length; i++)
        sigmoid[i] = 1 / 1 + StrictMath.exp(-x_theta[i]);

    return sigmoid;
}
1 2

1 ответ:

Вы забыли о скобках:

sigmoid[i] = 1 / 1 + StrictMath.exp(-x_theta[i]);

Эквивалентно

sigmoid[i] = (1 / 1) + StrictMath.exp(-x_theta[i]);

И так

sigmoid[i] = 1 + StrictMath.exp(-x_theta[i]);

В то время как вам, кажется, нужно

sigmoid[i] = 1 / ( 1 + StrictMath.exp(-x_theta[i]) );