0

これは私のコードです:

p = input1;
t1 = output1;
net = feedforwardnet(10, 'trainrp');
net.trainParam.epochs = 1000;
net.trainParam.goal = 0.0005;
net = train(net, p, t1); 
y1 = sim(net, p);
p = input2;
t2 = tar;
y2 = sim(net, p);

ただし、次のエラーが表示されます。

error using bsxfun
Non-singleton dimensions of the two input arrays must match each other.

Error in nnMATLAB.pc (line 24)
pi = bsxfun(@minus,pi,settings.xoffset);

Error in nncalc.preCalcData (line 20)
data.Pc = calcMode.pc(net,data.X,data.Xi,data.Q,data.TS,calcHints);

Error in nncalc.setup1 (line 118)
calcData =

nncalc.preCalcData(matlabMode,matlabHints,net,data,doPc,doPd,calcHints.doFlattenTime);

Error in network/sim (line 283)
[calcMode,calcNet,calcData,calcHints,~,resourceText] = nncalc.setup1(calcMode,net,data);

input1 を入力 310 x 24 行列として、output1 を出力 155 x 24 行列として持つニューラル ネットワークを作成したいと考えています。

また、input1 と output1 を使用してネットワークをトレーニングします。

このトレーニング プロセスの後、input2 をテスト データとして使用し、input1 と output1 によってトレーニングされた上記のネットワークを使用してシミュレーション結果を取得したいと考えています。

要約すると、input1 と output1 を使用して独自のネットワークをトレーニングし、input2 を使用してシミュレーション結果を取得したいと考えています。

これらのエラーは、トレーニング セクションとテスト セクションの入力サイズの違いに基づいていると思います。

どうすればこの問題を解決できますか? 追加のプロセスを実行する必要がありますか??

私はあなたの親切な答えを探しています。

ありがとうございました。

4

1 に答える 1

0

トレーニングとテストの入力数は同じでなければなりません。

トレーニングの場合: 入力は NxQ 行列である必要があります。ここで、N は入力要素の数、M はサンプルの数です。ターゲットは MxQ 行列である必要があります。ここで、M は出力要素の数で、Q は入力の場合と同じです。

次に、テスト用: 入力行列は NxQ2 である必要があります。ここで、N はトレーニングの場合と同じですが、Q2 のサンプル数は任意に指定できます。たとえば、単一のベクトルの場合、Q2 は 1 に等しくなります。出力は MxQ2 になります。ここで、M はトレーニングに使用される出力の数と同じであり、Q2 はテスト入力データと同じベクトルの数です。

于 2014-03-26T02:44:53.657 に答える