Ошибка обучения Encog постоянно меняется, но не опускается ниже определенного значения - PullRequest
0 голосов
/ 02 сентября 2018

Я очень плохо знаком с машинным обучением, и я создал и обучил MLP с обучением по алгоритму Backpropagation. Я беру свои данные в SQLNeuralDataSet. Когда я тренируюсь, ошибка продолжает изменяться, но в какой-то момент она возвращается к этому числу 0,183805 .... (точки представляют собой числа, которые продолжают изменяться, но не 0,183805). То же самое касается ResilientPropagation. Любая помощь будет высоко ценится.

BasicNetwork network = new BasicNetwork();
network.addLayer(new BasicLayer(null , true, 9));
network.addLayer(new BasicLayer(new ActivationSigmoid(), true, 8));
network.addLayer(new BasicLayer(new ActivationSigmoid(), false, 1));
network.getStructure().finalizeStructure() ;
network.reset();

MLDataSet trainingSet = new SQLNeuralDataSet(
    hourAheadLoad.SQL,
    hourAheadLoad.INPUT_SIZE,
    hourAheadLoad.IDEAL_SIZE,
    hourAheadLoad.SQL_DRIVER,
    hourAheadLoad.SQL_URL,
    hourAheadLoad.SQL_UID,
    hourAheadLoad.SQL_PWD);

    final Backpropagation train = new Backpropagation(network, trainingSet);
    train.addStrategy(new SmartMomentum());
    train.addStrategy(new SmartLearningRate());
    train.fixFlatSpot(false);

    int epoch = 1;

    do {
        train.iteration();
        System.out.println("Epoch #" + epoch + " Error:" + train.getError());
        epoch++;
        // train until error is less than 0.01
    } while(train.getError() > 0.01);
...