ajout du perceptron multicouches (1)
This commit is contained in:
parent
b3871fa415
commit
cfab1204e9
2 changed files with 55 additions and 1 deletions
29
learning/code/PMC_training.m
Normal file
29
learning/code/PMC_training.m
Normal file
|
@ -0,0 +1,29 @@
|
|||
function [net, rt, errort, perft] = PMC_training(entree, sortie, n_cache, nb_apprentissage)
|
||||
|
||||
[n_entree, nb_echantillons] = size(entree);
|
||||
[n_sortie, ~] = size(sortie);
|
||||
|
||||
% net = newff(entree, sortie, n_cache, {'tansig' 'tansig'}, 'trainscg');
|
||||
net = feedforwardnet(n_cache, 'trainscg');
|
||||
|
||||
net.trainParam.epochs = 1000; % Le nombre de cycle d’apprentissage est fixé à 1000
|
||||
|
||||
net.trainParam.lr = 0.02; % Le pas d’apprentissage est égal à 0.02
|
||||
|
||||
net.trainParam.show = 100; % Des informations sur les performances du réseau sont affichées tous les 100 cycles d’apprentissage
|
||||
|
||||
net.trainParam.goal = 1e-10; % L’algorithme d’apprentissage s’arrête lorsque l’erreur quadratique moyenne est inférieure à 1e-10
|
||||
|
||||
net.trainParam.min_grad = 1e-10; % L’algorithme d’apprentissage s’arrête lorsque le module du gradient est inférieur à 1e-10
|
||||
|
||||
net.divideParam.trainRatio = nb_apprentissage / nb_echantillons;
|
||||
net.divideParam.valRatio = 0; % On n'utilise pas d'ensemble de validation.
|
||||
net.divideParam.testRatio = (nb_echantillons - nb_apprentissage) / nb_echantillons;
|
||||
|
||||
net = train(net, entree, sortie);
|
||||
|
||||
entree_test = entree((nb_apprentissage + 1): nb_echantillons,:);
|
||||
sortie_test = sortie((nb_apprentissage + 1): nb_echantillons,:);
|
||||
[rt, pf, af, errort, perft] = sim(net, entree_test, [], [], sortie_test);
|
||||
end
|
||||
|
|
@ -13,6 +13,25 @@ dataset_size = length(dataset);
|
|||
|
||||
vecteurs=zeros(2*(cmax-cmin+1),dataset_size); %TODO: renommer en vectors
|
||||
|
||||
classes = []; %colonne [avance; arret; gauche; droite; rejet]
|
||||
|
||||
for k=1:dataset_size %instanciation des valeurs des classes pour le training
|
||||
deb = dataset(k).name(1:2);
|
||||
if deb == 'av'
|
||||
classes = [classes , [1;0;0;0;0]];
|
||||
elseif deb == 'ar'
|
||||
classes = [classes , [0;1;0;0;0]];
|
||||
elseif deb == 'ga'
|
||||
classes = [classes , [0;0;1;0;0]];
|
||||
elseif deb == 'dr'
|
||||
classes = [classes , [0;0;0;1;0]];
|
||||
elseif deb == 're'
|
||||
classes = [classes , [0;0;0;0;1]];
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
% c'est lent
|
||||
% s'assurer que l'on choisit toutes les images
|
||||
%
|
||||
|
@ -55,4 +74,10 @@ for n=1:n_classes
|
|||
axis equal
|
||||
axis ij
|
||||
drawnow
|
||||
end
|
||||
end
|
||||
|
||||
% utilisation de l'algorithme du perceptron multicouches
|
||||
|
||||
[net, resultats_test, ecarts, erreur] = PMC_training(vecteurs, classes, 10, 900);
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue