0

90 個の文字画像、つまり数字 1 ~ 9 から (10×10 セルごとに 1 を合計することにより) 特徴抽出した 90×8 データセットがあります。すべての行はイメージを表します。次のコードを使用してニューラル ネットワークをトレーニングし、新しい入力画像 (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] で正規化された私のデータセットです。どの部分が問題を引き起こしますか?

4

2 に答える 2

0

T はネットワークのターゲットとして使用されます。したがって、友人のアドバイスに従って、最初の 10 列の最初の行が 1 になり、他の行がゼロになり、2 番目の 10 列の 2 行目が 1 になるように、T を 9*90 配列として定義しました。の上

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

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

これにより、ネットワークのトレーニングで発生していたエラーが解決されましたが、入力文字にどのようにマップされ、それらが決定されるかはまだわかりません。

于 2014-01-17T20:00:41.310 に答える
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);
于 2014-01-17T08:48:16.390 に答える