MATLAB中的神经网络在训练中失败了

时间:2017-03-25 16:33:30

标签: matlab neural-network pca face-recognition

我正在使用MATLAB学习神经网络,我正在尝试使用PCA实现面部识别程序进行特征提取,并使用前馈神经网络进行分类。

我的训练集中有3个人,图像存储在“数据”目录中。

我正在为每个人使用一个网络,并且我使用我的训练集的所有图像训练每个网络,我的项目代码如下所示:

dirs = dir('data');
size = numel(dirs);
eigenVecs = [];
% a neural network for each individual
net1 = feedforwardnet(10);
net2 = feedforwardnet(10);
net3 = feedforwardnet(10);

% extract eigen vectors and prepare the input of the NN
for i= 3:size
    eigenVecs{i-2} =  eigenFaces(dirs(i).name);
end
trainSet= cell2mat(eigenVecs'); % 27X1024 double

% set the target for each NN, and then train it.
T = [1 1 1 1 1 1 1 1 1 ...
     0 0 0 0 0 0 0 0 0 ...
     0 0 0 0 0 0 0 0 0];
train(net1, trainSet', T);
T = [0 0 0 0 0 0 0 0 0 ...
     1 1 1 1 1 1 1 1 1 ...
     0 0 0 0 0 0 0 0 0];
train(net2, trainSet', T);
T = [0 0 0 0 0 0 0 0 0 ...
     0 0 0 0 0 0 0 0 0 ...
     1 1 1 1 1 1 1 1 1];
train(net3, trainSet', T);

完成网络培训后,我得到了这个小组:

nntraintool panel

**如果有人能向我解释小组的进度部分,因为我无法理解这些数字的含义。 **

在训练网络后,我尝试使用以下方法测试网络:

sim(net1, L)

其中L是我的集合中的样本,它是1X1024向量,我得到的结果是:

Empty matrix: 0-by-1024

我训练神经网络的方法错了吗?我该怎么做才能解决这个问题呢?

谢谢

1 个答案:

答案 0 :(得分:0)

代码

 train(net1, trainSet', T);

不会将经过训练的网络保存到net1变量中(将其保存到ans变量中)。这就是sim的结果为空的原因:net1中没有经过训练的网络。你必须自己保存训练有素的网络:

 net1= train(net1, trainSet', T);