Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Error with UPDATE_WEIGHTS and neural networks

Hello,

I get an error when using UPDATE_WEIGHTS in order to adapt the weights of a neural network without reinitializing them. The error states:

OpenCV Error: One of arguments' values is out of range (Some of new output train ing vector components run exceed the original range too much) in CvANN_MLP::calc _output_scale, file ......\src\opencv\modules\ml\src\ann_mlp.cpp, line 638

I am using OpenCV 2.4.2 (before I tried with 2.3.1 and got the same error). My code looks like this:

int flags = CvANN_MLP::NO_INPUT_SCALE | CvANN_MLP::NO_OUTPUT_SCALE;

int numiter = 0;
for(size_t n=0; n<_num_trn_cycles; ++n)
{
    if(n>0)
        flags = flags | CvANN_MLP::UPDATE_WEIGHTS;
    numiter += _mlp.train(trnfeat, trnlabs, Mat(), Mat(), params, flags);
    cout << numiter << endl;
}

My feature vectors have been previously normalized to have zero mean and unit standard deviation. The first iteration of the loop executes correctly, but afterwards once the UPDATE_WEIGHTS flag is set, the program stops. Is this a bug in the OpenCV code or should I do something else?

Thanks in advance!

jmr

Error with UPDATE_WEIGHTS and neural networks

Hello,

I get an error when using UPDATE_WEIGHTS in order to adapt the weights of a neural network without reinitializing them. The error states:

OpenCV Error: One of arguments' values is out of range (Some of new output train ing vector components run exceed the original range too much) in CvANN_MLP::calc _output_scale, file ......\src\opencv\modules\ml\src\ann_mlp.cpp, line 638

I am using OpenCV 2.4.2 (before I tried with 2.3.1 and got the same error). My code looks like this:

int flags = CvANN_MLP::NO_INPUT_SCALE | CvANN_MLP::NO_OUTPUT_SCALE;
 int numiter = 0;
for(size_t n=0; n<_num_trn_cycles; ++n)
{
    if(n>0)
        flags = flags | CvANN_MLP::UPDATE_WEIGHTS;
    numiter += _mlp.train(trnfeat, trnlabs, Mat(), Mat(), params, flags);
    cout << numiter << endl;
}

My feature vectors have been previously normalized to have zero mean and unit standard deviation. The first iteration of the loop executes correctly, but afterwards once the UPDATE_WEIGHTS flag is set, the program stops. Is this a bug in the OpenCV code or should I do something else?

Thanks in advance!

jmr