MATLAB NN工具箱:使用trainlm时出错

时间:2014-01-17 08:08:17

标签: matlab lpr nntool

我有90×8数据集,我通过90个字符图像(即数字1-9)进行特征提取(通过将每10×10个单元格中的1个相加)。每行代表一个图像。 我正在尝试使用以下代码来训练神经网络并识别新的输入图像(包括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,网,X,T,僖,艾,EW,net.trainParam);

     

神经中的错误(第55行)[net,tr] = train(net,datasetNormalized,T);

注意:datasetNormalized是我在[0,1]中规范化的数据集。 哪个部分导致问题?

2 个答案:

答案 0 :(得分:0)

输入和目标具有不同数量的样本。这似乎是问题

     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);

答案 1 :(得分:0)

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);

这解决了我在训练网络上遇到的错误,虽然我还不确定它将如何映射到输入字符并确定它们。