简单前馈(newff)网络在MATLAB中

问题描述:

我使用了ffnew函数很多次,但是当我尝试创建一个简单的前馈网络,使得输入向量为P=[1;2;3;4]并且所需输出为T=[1 ;0;0;1]。所以,我只有一个样本输入向量简单前馈(newff)网络在MATLAB中

的代码是

net = newff(P,T,[4 1],{'tansig','tansig'}); 
net=train (net,P,T); 

当我写的最后一行我:

??? Error using ==> plus 
Matrix dimensions must agree. 

Error in ==> calcperf2 at 163 
     N{i,ts} = N{i,ts} + Z{k}; 

Error in ==> trainlm at 253 
[perf,El,trainV.Y,Ac,N,Zb,Zi,Zl] = calcperf2(net,X,trainV.Pd,trainV.Tl,trainV.Ai,Q,TS); 

Error in ==> network.train at 216 
    [net,tr] = feval(net.trainFcn,net,tr,trainV,valV,testV); 
+0

是'P' 4维样本矢量还是每个都有4个1-dim的样本? – Amro 2010-06-25 19:45:11

+0

它是一个4维样本 – Hani 2010-06-25 20:03:25

+0

以及输出如何编码?请参阅我发布的XOR示例..顺便说一句,训练一个神经网络仅仅只有一个例子! – Amro 2010-06-25 20:05:30

也许一个简单的例子会有所帮助。考虑着名的异或问题:

input = [0 0; 0 1; 1 0; 1 1]';    %'# each column is an input vector 
ouputActual = [0 1 1 0];      %# 

net = newpr(input, ouputActual, 2);   %# 1 hidden layer with 2 neurons 
net.divideFcn = '';       %# use the entire input for training 

net = init(net);        %# init 
[net,tr] = train(net, input, ouputActual); %# train 
outputPredicted = sim(net, input);   %# predict 

[err,cm] = confusion(ouputActual,outputPredicted); 

请注意,我使用NEWPR而不是NEWFF。原因是它在输出上使用逻辑函数(NEWFF确实是线性的),这更适合于分类任务。如果使用1中的1个目标编码,则输出将在[0,1]范围内并且可以被解释为每个类别的后验概率(NEWFF将不限于[0,1])

,如果您使用MLP或RNN你NN,您可以更改功能

a2 = round(f2(LW2 * a1 + b2))a2 = round(purelin(LW2 * a1 + b2))

则输出NN(A2)将二进制