ajout du perceptron multicouches (1)

This commit is contained in:
Felix Maurin 2019-12-17 00:33:40 +01:00
parent b3871fa415
commit cfab1204e9
2 changed files with 55 additions and 1 deletions

View 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 dapprentissage est fixé à 1000
net.trainParam.lr = 0.02; % Le pas dapprentissage est égal à 0.02
net.trainParam.show = 100; % Des informations sur les performances du réseau sont affichées tous les 100 cycles dapprentissage
net.trainParam.goal = 1e-10; % Lalgorithme dapprentissage sarrête lorsque lerreur quadratique moyenne est inférieure à 1e-10
net.trainParam.min_grad = 1e-10; % Lalgorithme dapprentissage sarrê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

View file

@ -13,6 +13,25 @@ dataset_size = length(dataset);
vecteurs=zeros(2*(cmax-cmin+1),dataset_size); %TODO: renommer en vectors 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 % c'est lent
% s'assurer que l'on choisit toutes les images % s'assurer que l'on choisit toutes les images
% %
@ -56,3 +75,9 @@ for n=1:n_classes
axis ij axis ij
drawnow drawnow
end end
% utilisation de l'algorithme du perceptron multicouches
[net, resultats_test, ecarts, erreur] = PMC_training(vecteurs, classes, 10, 900);