【问题标题】:MATLAB NN toolbox: Error using trainlmMATLAB NN 工具箱:使用 trainlm 时出错
【发布时间】:2014-02-06 11:37:21
【问题描述】:

我有一个 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,net,X,T,Xi,Ai,EW,net.trainParam);

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

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

【问题讨论】:

    标签: matlab lpr nntool


    【解决方案1】:

    输入和目标具有不同数量的样本。好像有问题

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

    【讨论】:

    • 问题仍然存在
    • 究竟应该为网络输入什么输出?太复杂了,我一头雾水!
    • 错误信息是什么?你能告诉我们 T 和 datasetNormalized 的大小
    • 使用 trainlm 时出错(第 109 行)输入和目标具有不同数量的样本。网络/火车错误(第 106 行)[net,tr] = feval(net.trainFcn,net,X,T,Xi,Ai,EW,net.trainParam);神经错误(第 56 行)[net,tr]=train(net,datasetNormalized',T)
    【解决方案2】:

    T 将用作网络的目标;因此,按照朋友的建议,我将 T 定义为 9*90 数组,前 10 列的第一行为 1,其他行为 0,后 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);
    

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

    【讨论】:

      猜你喜欢
      • 2019-09-25
      • 1970-01-01
      • 2015-11-05
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      相关资源
      最近更新 更多