Encog - EarlyStoppingStrategy с установленной проверкой

Я хотел бы прекратить обучение сети, как только увижу, что ошибка, вычисленная из набора проверки, начинает увеличиваться. Я использую BasicNetwork с RPROP в качестве алгоритма обучения, и у меня есть следующая итерация обучения:

double validationError = 999.999;


    while(!stop){

        train.iteration(); //weights are updated here

        System.out.println("Epoch #" + epoch + " Error : " + train.getError()) ;

        //I'm just comparing to see if the error on the validation set increased or not
        if (network.calculateError(validationSet) < validationError)
            validationError = network.calculateError(validationSet); 

        else
            //once the error increases I stop the training.
            stop = true ;

        System.out.println("Epoch #" + epoch + "Validation Error" + network.calculateError(validationSet));

        epoch++;

    }
        train.finishTraining();

Очевидно, это не работает, потому что веса уже были изменены, прежде чем выяснить, нужно ли мне прекратить тренировки или нет. Могу ли я в любом случае сделать шаг назад и использовать старые веса?

Я также вижу EarlyStoppingStrategy класс, который, вероятно, что мне нужно использовать с помощью addStrategy() метод. Тем не менее, я действительно не понимаю, почему EarlyStoppingStrategy Конструктор принимает как набор проверки, так и набор тестов. Я думал, что для этого понадобится только набор проверки, и набор тестов не должен использоваться вообще, пока я не протестирую вывод сети.

1 ответ

Решение

Класс EarlyStoppingStrategy от Encog реализует стратегию ранней остановки в соответствии с этой статьей:

Пробен1 | Набор проблем эталонных тестов нейронной сети и правил эталонных тестов

(полный цитат включен в Javadoc)

Если вы просто хотите остановить, как только ошибка набора проверки больше не улучшится, вы можете просто использовать Encog SimpleEarlyStoppingStrategy, найденный здесь:

org.encog.ml.train.strategy.end.SimpleEarlyStoppingStrategy

Обратите внимание, что SimpleEarlyStoppingStrategy требует Encog 3.3.

Другие вопросы по тегам