Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

MLP Train iteration limit - bug?

I am trying to learn my neural network to classify images. The whole learning data preparing and other stuffs work ok, the NN can learn recognizing 5 images (1 per class).

But when I get it 2 images per class, I got quite bad results - I think it's because the NN is undertained. So I updated the term criteria from 1000 to 10 000:

mlp->setTermCriteria(TermCriteria(
    TermCriteria::Type::MAX_ITER, 
    10000,
    0.0001
));

but with no success - still the same training time and recognizing results. It looks like the max iteration parameter only scale from 1-3000 - higher values don't make a difference.

So I tryied to update the weight in loop:

mlp->train(trainingData);

for (int i = 0; i < 100; i++) {
    cout << "Traning iteration: " << i << endl;
    mlp->train(trainingData
        , ANN_MLP::TrainFlags::UPDATE_WEIGHTS
    );
}

But only first 2-3 iterations take time, the other aren't learining anything and I just got text spaming in console.

My layers size are 1250-300-5. When I set the hidden layers to 100 i got better results and with 50 the results are perfect, so it means that the NN is working ok but I can't force the OpenCV to extend the learning time.

So my question is how to force the OpenCV ANN_MLP to pefrorm larger training? Any tips will be helpful ;)