2013-07-11 3 views
2

Единственный способ я знаю, чтобы обучить многослойную нейронную сеть в OpenCV является:OpenCV Neural Network поезд одной итерации в то время

CvANN_MLP network; 
.... 
network.train(input, output, Mat(), Mat(), params, flags); 

Но это не будет печатать любые значимые отладки (количество, например, итерация, текущая ошибка , ...), программа будет сидеть там до тех пор, пока она не закончит обучение, очень хлопотно, если набор данных находится в гигабайтах, я никак не могу видеть прогресс.

Как мне настроить сеть за одну итерацию за раз или распечатать какую-то отладку во время обучения?

+0

К сожалению, я не нашел это возможным ... Я пытаюсь выяснить, что он делает с LBPH Face Recognizer в течение недели, но функции просто не раскрываются. – Manas

ответ

1

Проблема не решена, но вопрос решён. Ответ: Это невозможно в отношении текущих версий OpenCV.

0

В соответствии с http://opencv.willowgarage.com/documentation/cpp/ml_neural_networks.html#cvann-mlp-train параметр params имеет тип cvANN_MLP_TrainParams. Этот класс содержит свойство TermCriteria, которое контролирует, когда функция обучения завершается. Этот класс критериев завершения http://opencv.willowgarage.com/documentation/cpp/basic_structures.html может быть установлен на завершение после заданного количества итераций или когда выполняются заданные условия эпсилона или какая-то их комбинация. Я не использовал функцию обучения себя, так что я не могу знать код, который вы хотите использовать, чтобы сделать эту работу, но что-то подобное должно ограничить количество тренировочных циклов

CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams() 

params.term_crit.type = 1;//This should tell the train function you want to terminate on number of iterations 
params.term_crit.maxCount = 1;//Termination after one iteration might be max_iter instead of maxCount 

network.train(input, output, Mat(),Mat(), params, flags) 

Как я сказал, гавань» t работал с openCV, но, прочитав документацию, что-то вроде этого должно работать.

+0

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

+0

Не могли бы вы добавить подробные сведения о том, что вы пробовали по этим строкам и как это не удалось? –

+0

Я бы хотел, чтобы эта форма комментария позволяла встраивать код. В любом случае это не подводит, просто невозможно получить текущую ошибку, самую важную информацию. –

1

Вы устанавливаете флаги UPDATE_WEIGHTS?

Вы можете проверить ошибку самостоятельно, указав ANN вектор результата для каждого образца в наборе тренировок.