2019-12-17 10:46:20 +00:00
|
|
|
|
function [net, rt] = PMC_training(entree, sortie, n_cache, nb_apprentissage)
|
2019-12-16 23:33:40 +00:00
|
|
|
|
|
|
|
|
|
[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<EFBFBD>apprentissage est fix<EFBFBD> <EFBFBD> 1000
|
|
|
|
|
|
|
|
|
|
net.trainParam.lr = 0.02; % Le pas d<EFBFBD>apprentissage est <EFBFBD>gal <EFBFBD> 0.02
|
|
|
|
|
|
|
|
|
|
net.trainParam.show = 100; % Des informations sur les performances du r<EFBFBD>seau sont affich<EFBFBD>es tous les 100 cycles d<EFBFBD>apprentissage
|
|
|
|
|
|
|
|
|
|
net.trainParam.goal = 1e-10; % L<EFBFBD>algorithme d<EFBFBD>apprentissage s<EFBFBD>arr<EFBFBD>te lorsque l<EFBFBD>erreur quadratique moyenne est inf<EFBFBD>rieure <EFBFBD> 1e-10
|
|
|
|
|
|
|
|
|
|
net.trainParam.min_grad = 1e-10; % L<EFBFBD>algorithme d<EFBFBD>apprentissage s<EFBFBD>arr<EFBFBD>te lorsque le module du gradient est inf<EFBFBD>rieur <EFBFBD> 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);
|
|
|
|
|
|
2019-12-17 10:46:20 +00:00
|
|
|
|
entree_test = entree(:,(nb_apprentissage + 1): nb_echantillons);
|
|
|
|
|
sortie_test = sortie(:,(nb_apprentissage + 1): nb_echantillons);
|
|
|
|
|
rt = sim(net, entree_test, [], [], sortie_test);
|
2019-12-16 23:33:40 +00:00
|
|
|
|
end
|
|
|
|
|
|