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;
    

    所以这里我们有两个输入和两个输出 (MIMO) 2 → 2

  2. 现在您应该创建网络。我选择了前馈网络:

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

    这里我定义了输入数据范围、每层神经元个数(包括输出层=2)、函数类型和训练算法类型。

  3. 现在您可以训练您的网络:

    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)
于 2013-04-19T12:56:58.587 回答