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

时间:2010-06-25 19:26:36

标签: matlab machine-learning neural-network

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

代码是

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);

2 个答案:

答案 0 :(得分:1)

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

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-of-N目标编码,则输出将在[0,1]范围内,并且可以解释为每个类的后验概率(NEWFF不会限制为[0,1])

答案 1 :(得分:1)

如果使用MLP或RNN创建NN,则可以更改功能

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

然后输出NN(a2)将是二进制