2017-03-25 2 views
1

Je suis en train d'apprendre les réseaux neuronaux en utilisant MATLAB, j'essaye d'implémenter un programme de reconnaissance faciale utilisant PCA pour l'extraction de caractéristiques, et un réseau neuronal feedforward pour la classification.réseau neuronal dans MATLAB échoue dans la formation

J'ai 3 personnes dans mon ensemble d'apprentissage, les images sont stockées dans le répertoire 'data'.

J'utilise un réseau pour chaque individu, et je former chaque réseau avec toutes les images de mon jeu de formation, le code pour mon projet est présenté ci-dessous:

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

après avoir terminé avec la formation du réseau, je reçois ce panneau:

nntraintool panel

** si quelqu'un pouvait me expliquer la section de progression du panneau, parce que je ne pouvais pas comprendre ce que ces chiffres signifiaient. **

après la formation des réseaux, j'essaie de tester le réseau en utilisant:

sim(net1, L) 

où L est un échantillon de mon jeu qui est un vecteur 1X1024, le résultat que je suis arrivé est ceci:

Empty matrix: 0-by-1024 

est-ce que mon approche pour former les réseaux de neurones est fausse? Que puis-je faire pour réparer ce programme?

merci

Répondre

0

Le code

train(net1, trainSet', T); 

ne sauve pas le réseau formé dans la net1 variable (il enregistre dans ans variable). C'est la raison pour laquelle le résultat de sim est vide: il n'y a pas de réseau qualifié dans net1. Vous devez enregistrer le réseau vous formé:

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

Merci beaucoup pour votre réponse, qui semble résoudre le problème que je faisais face à la matrice vide, pourriez-vous s'il vous plaît expliquer pour moi les différents paramètres de la section de performance de l'image que j'ai attachée? j'aimerais comprendre ces paramètres. merci –

+0

Il y a une description ici: https://www.mathworks.com/help/nnet/ug/train-and-apply-multilayer-neural-networks.html. Vous pouvez également consulter https://www.mathworks.com/help/nnet/ref/trainlm.html pour la description du paramètre mu – AVK