2012-06-19 110 views
2

我需要帮助纠正这段代码,以在matlab中使用神经网络实现XOR。但是,我无法将输入权重从输入层设置为第一层。该网络分别具有2,2和1个神经元的输入层,隐层和输出层。 有人可以帮助我吗?matlab中的神经网络:如何指定输入权重

net=network; 
net.numInputs = 1; 
net.inputs{1}.size = 2; 
net.numLayers = 2; 
net.layers{1}.size = 2; 
net.layers{2}.size = 1; 
net.inputConnect(1) = 1; 
net.layerConnect(2, 1) = 1; 
net.outputConnect(2) = 1; 
net.targetConnect(2) = 1; 
net.layers{1}.transferFcn = 'logsig';%>> net.layers{2}.transferFcn = 'purelin'; 
net.layers{2}.transferFcn = 'logsig'; 
net.biasConnect = [ 1 ; 1]; 
net.layers{1}.initFcn = 'initwb'; 
net.layers{2}.initFcn = 'initwb'; 
net.inputWeights={1 1;1 1};%ask this. error is not explanatory. probably syntax. 
net.biases{1}={-1.5 -0.5}; 
net.biases{2}=-0.5; 
net.layerWeights{2,1}={-2 1}; 
P=[0 1 0 1;0 0 1 1]; 
T=[0 1 1 0]; 
net.initFcn = 'initlay'; 
net = init(net); 
net.adaptFcn = 'adaptwb'; 
net.inputWeights{1,1}.learnFcn = 'learnp'; 
net.biases{1}.learnFcn = 'learnp'; 
net.adaptParam.passes =3; 
net.performFcn = 'mse'; 
y = sim(net,P) 

回答

0

doc network告诉我:

如果net.inputConnect(I,J)为1,则net.inputWeights {I,J}是定义重量以从输入层I的结构 学家

因此,而不是设置一个单元阵列的net.inputWeights您应该设置元件net.inputWeights对于这样的输入和第一层节点的每个组合:

net.inputWeights{1,1} = weight11; % input1 node 1 
net.inputWeigtts{1,2} = weight12; % input1 node 2 
...