0

次のような多入力多出力 (MIMO) システムのニューラル ネットワークを構築したいと考えています。

y1(t)= f1( x1(t), x2(t),...xn(t))
y2(t)= f2( x1(t), x2(t),...xn(t))
.....
.....
ym(t)= fm( x1(t), x2(t),...xn(t))

私が読んだ本では、単一入力単一出力システムの例について説明しています。ほとんどの場合、フォームの関数近似で y= f(t)あり、ニューラル ネットワークは入力 t (独立変数) と出力 y に対してトレーニングされます。私は matlab ニューラル ネットワーク ツールボックスを使用しており、スカラー ケースのソリューションは簡単に実行できます。しかし、MIMO 問題をどのように構築または解決すればよいでしょうか。入力または出力を変換または表現して、matlab 組み込み関数の問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

まず、非常に単純な例:

  1. まず、入力データ用のマトリックスと出力データ用のマトリックスを作成する必要があります。ここでは、MATLAB から事前設定されたデータを使用しています。入出力データの構造を次のようにする必要があります。

    [InData, TarData] = engin_dataset;
    

    したがって、ここには 2 つの入力と 2 つの出力があります (MIMO) 2 → 2

  2. 次に、ネットワークを作成する必要があります。フィードフォワード ネットワークを選択しました。

    net1 = newff(minmax(InData),[10,2],{'tansig','purelin'},'trainlm')
    

    ここでは、入力データ範囲、各層のニューロン数 (出力層 = 2 を含む)、関数のタイプ、およびトレーニング アルゴリズムのタイプを定義しました。

  3. これで、ネットワークをトレーニングできます。

    net2 = train(net1,InData,TarData)
    

コードは、MATLAB によって自動的に生成された例の 1 つからのものです。

% load data
[inputs,targets] = engin_dataset;
%inputs = engineInputs;
%targets = engineTargets;

% Create a Fitting Network
hiddenLayerSize = 10;
net = fitnet(hiddenLayerSize);

% Setup Division of Data for Training, Validation, Testing
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;

% Train the Network
[net,tr] = train(net,inputs,targets);

% Test the Network
outputs = net(inputs);
errors = gsubtract(targets,outputs);
performance = perform(net,targets,outputs)

% View the Network
view(net)
于 2013-04-19T12:56:58.587 に答える