Панель инструментов MATLAB NN: Ошибка при использовании trainlm

У меня есть набор данных 90×8, который я извлекал (суммируя 1 в каждой ячейке 10×10) из 90 изображений символов, то есть цифр 1-9. Каждая строка представляет изображение. Я пытаюсь использовать следующий код для обучения нейронной сети и распознавания новых входных изображений (это цифры от 1 до 9 включительно):

net.trainFcn='traingdx';
net.performFcn='sse';
net.trainParam.goal=0.1;
net.trainParam.show=20;
net.trainParam.epochs=5000;
net.trainParam.mc=0.95;
net =newff(minmax(datasetNormalized'),[20 9],{'logsig' 'logsig'});    
T=reshape(repmat([1:9],10,1),1,90);
[net,tr]=train(net,datasetNormalized,T);

После этого я хочу использовать следующее для распознавания новых изображений с использованием обученной сети. m - это символ изображения, который также был извлечен.

[a,m]=max(sim(net,m));
disp(b);

Я получаю следующие ошибки и не знаю, как их решить:

Ошибка при использовании trainlm (строка 109)

Входы и цели имеют различное количество образцов.

Ошибка в сети / поезде (строка 106) [net,tr] = feval(net.trainFcn,net,X,T,Xi,Ai,EW,net.trainParam);

Ошибка в Neural (строка 55) [net,tr]=train(net,datasetNormalized,T);

Примечание. DatasetNormalized - это мой набор данных, нормализованный в [0,1]. Какая часть вызывает проблему?

2 ответа

T должен использоваться в качестве цели для сети; Поэтому, следуя совету друга, я определил T как массив 9*90 таким образом, что первые 10 столбцов имеют 1 в своей первой строке, остальные строки равны нулю, вторые 10 столбцов имеют 1 во второй строке, и поэтому на

T=zeros(9,90);
for j=1:90
    i=ceil(j/10);
    T(i,j)=1;
end

[net,tr]=train(net,datasetNormalized',T);

Это решило ошибку, с которой я столкнулся в тренировочной сети, хотя я до сих пор не уверен, как она будет отображаться для ввода символов и их определения.

Входы и цели имеют различное количество образцов. похоже проблема

     T=reshape(repmat([1:9],10,1),1,90) --> T=reshape(repmat([1:9],10,1),90,1)

[net,tr]=train(net,datasetNormalized,T); --> [net,tr]=train(net,datasetNormalized',T);
Другие вопросы по тегам