假设我创建了一个神经网络来分离类:
X1; %Some data in Class 1 100x2
X2; %Some data in Class 2 100x2
classInput = [X1;X2];
negative = zeros(N, 1);
positive = ones(N,1);
classTarget = [positive negative; negative positive];
net = feedforwardnet(20);
net = configure(net, classInput, classTarget);
net = train(net, classInput, classTarget);
%output of training data
output = net(classInput);
我可以绘制类,并将它们正确分开:
figure();
hold on
style = {'ro' 'bx'};
for i=1:(2*N)
plot(classInput(i,1),classInput(i,2), style{round(output(i,1))+1});
end
但是,如何将刚刚接受过培训的网络应用于看不见的数据?必须有一个由网络生成的模型,可以应用于新数据吗?
编辑:使用sim:
训练网络后,如果我在训练数据上使用sim:
[Z,Xf,Af] = sim(net,classInput);
结果如预期。但这只适用于输入大小相同的情况。例如,如果我想评估单个数据点:
[Z1,Xf,Af] = sim(net,[1,2]);
尺寸(Z)==尺寸(Z1),但这显然没有意义?当然,我可以评估一个数据点吗?
答案 0 :(得分:1)
我是OP,
我假设输入矩阵的行是数据样本而列是"类别",这是另一种方式。在将矩阵输入到train()函数之前转置矩阵可以解决这个问题。