MATLAB: Indexing cannot yield multiple results.

divide indexdividefcndivideindneural network

Hi!
I'm working with Neural Networks and I'd like to compare two different sets of data to train my NN. Thus, I'd like to train and validate my network with the same samples in order to compare which set is better to train my network and to be able to quantify its improvement. For this purpose I'm training the network with the first set, which is a 8×1464 matrix, and saving its divide parameters, which are: train indexes (tr.trainInd, which is a 1×1024 matrix), validation indexes (tr.valInd, 1×220) and test indexes (tr.testInd, 1×220) with the following code:
train=tr.trainInd;
val=tr.valInd;
test=tr.testInd;
After this, I restart my NN and set its divide parameters to the previous ones with:
net.divideFcn='divideind';
net.divideParam.trainInd=train;
net.divideParam.valInd=val;
net.divideParam.testInd=test;
Then, I try to train the network with the new set, which is a 21×1464 matrix (same samples with more parameters), but the message " Indexing cannot yield multiple results " appears. I don't understand why this message appears, as both sets contain 1464 samples and thus, divide indexes should be fine.
Thanks in advance for your help!

Best Answer

  • First:
    train = tr.trainInd;
    is not allowed because train is a reserved word.
    I use
    trnind, valind, and tstind.
    Notice the lower case i and the abbreviations of train and test.
    Second:
    If you want to use divideind, divide BEFORE TRAINING. For example:
    N = 110
    [trnind,valind,tstind]=divideind(N,1:2:100,4:2:48,52:2:108);
    net.divideFcn = 'divideind';
    net.divideParam.trainInd = trnind;
    net.divideParam.valInd = valind;
    net.divideParam.testInd = tstind;
    Notice that not all of the data is used.
    Third:
    Reread the documentation
    help divideind
    doc divideind
    Hope this helps.
    Thank you for formally accepting this answer
    Greg