我想为多输入多输出(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内置函数的问题?
答案 0 :(得分:1)
首先是一个非常简单的例子:
首先,您需要为输入数据创建矩阵,为输出数据创建另一个矩阵。 在这里,我使用MATLAB的预设数据。您应该尝试使输入输出数据的结构如下:
[InData, TarData] = engin_dataset;
所以这里我们有两个输入和两个输出(MIMO)2→2
现在您应该创建网络。我选择了前馈网络:
net1 = newff(minmax(InData),[10,2],{'tansig','purelin'},'trainlm')
这里我定义了输入数据范围,每层神经元的数量(包括输出层= 2),函数类型和训练算法的类型。
现在您可以训练您的网络:
net2 = train(net1,InData,TarData)
这里的代码来自MATLAB自动生成的一个示例:
% 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)