在MATLAB

时间:2017-05-27 09:50:46

标签: matlab neural-network

我正在使用MATLAB R2014a,我想创建以下神经网络:

Connection weights of dashed lines are -1 and other solid lines weight's are 1

使用以下代码:

net=network;
net.numInputs=2;
net.numLayers=3;
net.inputConnect=[1 1;0 0;0 0];
net.layerConnect=[0 0 0;1 0 0;0 1 0];
net.layers{1}.size=2;
net.layers{2}.size=4;
net.layers{3}.size=2;
net.outputConnect=[0 0 1];
net.layers{:}.transferFcn = 'hardlim';
net.trainFcn = 'trainscg';
net.inputs{1}.size=4;
net.inputs{2}.size=4;

我收到了这个网络:

enter image description here

现在,当我想用​​这段代码指定输入权重时:

net.inputWeights=[1 1;0 0; 0 0];

或者这个:

net.inputWeights{1,1}=1;

我有这个错误:

Error using network/subsasgn>network_subsasgn (line 267)
You must assign to subobject properties individually[.][3]

Error in network/subsasgn (line 13)
net = network_subsasgn(net,subscripts,v,netname);

使用net.IW=[1 1;0 0; 0 0];,错误将是:

Error using network/subsasgn>network_subsasgn (line 553)
net.IW must be a 3-by-2 cell array.

Error in network/subsasgn (line 13)
net = network_subsasgn(net,subscripts,v,netname);

我还尝试了net=configure(net,x,t)net = train(net,x,t)函数,例如:x=[1 2 3 4]; t=[1.5 2.5 3.5 4.5];但我收到了configure函数的错误:

Error using network/configure (line 111)
The numbers of input signals and networks inputs do not match.

train的这一个:

Error using network/train (line 320)
Number of inputs does not match net.numInputs.

那么,如何完成此自定义神经网络以获取连接权重等详细信息?

提前致谢

1 个答案:

答案 0 :(得分:0)

最后我用以下代码解决了问题:

当我使用我在问题中解释的代码时,无法在手动模式下更改连接的权重。但是使用这段代码(代码I'在我的回答中显示),我可以更改权重和其他设置而不会出现任何错误。 feedforwardnet是MATLAB中的正确功能。

net=feedforwardnet([2,4,2]);
net.numInputs=2;
net.inputConnect=[1 1;0 0;0 0;0 0];
net.layerConnect=[0 0 0 0;1 0 0 0;0 1 0 0;0 0 1 0];
net.inputs{1}.size=1;
net.inputs{2}.size=1;
net.IW{1,1}=[1;0];
net.IW{1,2}=[0;1];
net.LW{2,1}=[-1 1;1 -1;-1 -1;1 1];
net.LW{3,2}=[1 1 0 0;0 0 1 1];
view(net);