Как исправить :) NeuralNetwork для регрессии, которая выводит всегда один и тот же прогноз - PullRequest
0 голосов
/ 18 февраля 2019

Я использую библиотеку smile для обучения нейронной сети простой задаче нелинейной регрессии.Для каждого ввода я получаю одно и то же предсказание.Может быть, я что-то не так делаю со строительством нейронной сети.Не могли бы вы подсказать, что мне не хватает?Я не включаю данные по юридическим причинам, напр.[1, 3, 8, 15, 7 ...]

    int[] units=new int[4];
    units[0]=1;
    units[1]=10;
    units[2]=10;
    units[3]=1;
    smile.regression.NeuralNetwork net =
        new smile.regression.NeuralNetwork(
         smile.regression.NeuralNetwork.ActivationFunction.LOGISTIC_SIGMOID,
         units);

    int epochs=10;
    for (int i = 0; i < epochs; i++) {
        net.learn(data, label);
    }

    double[] pred = new double[label.length];
    double maxError=0.0;
    for (int i = 0; i < label.length; i++) {
        pred[i] = net.predict(data[i]);
        double error=Math.abs(pred[i]-label[i]);
        if(error>maxError){
            maxError=error;
        }
        System.out.println("For data "+data[i][0]);
        System.out.println(pred[i]+" "+label[i]);
    }

1 Ответ

0 голосов
/ 09 августа 2019

Я полагаю, что это из-за вашего единичного вектора, он должен содержать только 3 числа: количество входных слоев = количество объектов, количество скрытых слоев и количество выходных слоев = 1

...