Как исправить:) NeuralNetwork для регрессии, которая выводит всегда один и тот же прогноз
Я использую библиотеку улыбок для обучения нейронной сети для простой задачи нелинейной регрессии. Для каждого ввода я получаю одно и то же предсказание. Может быть, я что-то не так делаю со строительством нейронной сети. Не могли бы вы подсказать, что мне не хватает? Я не включаю данные по юридическим причинам, напр. [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]);
}
0 ответов
Я считаю, что это связано с вашим единичным вектором, он должен содержать только 3 числа: количество входных слоев = количество функций, количество скрытых слоев и количество выходных слоев = 1