oui maintenant ca marche merci;);)
oui maintenant ca marche merci;);)
oui maintenant ca marche merci;);)
salut francy
j'ai programmé un réseau de neurone je t'ai envoyé déjà le programme hier
j'ai pas compris une chose j'ai lancé mon programme dans matlab il tourne bien j'ai obtenue les résultats mais lorsque j'ai relancé le programme dans le même spacework j'ai obtenu de résultats (c'est a dire j'ai tapé le programme dans matlab je trouves des résultats mais lorsque j'ai fait copier coller de la même programme dans la même spacework j'ai obtenue des résultats différentes j'ai pas compris pourquoi
Je ne vois pas trop mais dans le doute fait un coup de clear all entre tes essais. Sinon vu la taille du programme le plus simple est de le mettre dans un fichier .m
bonjour francy
voici mon programme
% les données de reseaux (l'entrée: (sal, BPT ), la sortie:TE
sal=[0.6186 0.6369 1.5707 1.6867 3.735 4.5285 6.4212 7.1354 1.8504 2.5375 3.469 4.0254 5.8352 5.9126 0.7981 1.001 1.7117 2.151 3.473 3.618 5.0555 5.0648 1.2813 1.9457 3.0582 3.3534 4.911 5.4038 1.1263 2.2542 5.178 0.6239 2.643 4.779 6.3231 1.2566 3.03 4.281 0.19101 2.5357 3.9086 5.9291 1.1735 3.0542 5.7635 1.253 3.467 5.3929 6.4064 1.683 3.3541 4.876 0.6887 2.6012 4.4208 6.4108];
sall=(sal-mean(sal))/std(sal);
BPT=[60 60 60 60 60 60 60 60 80 80 80 80 80 80 100 100 100 100 100 100 100 100 120 120 120 120 120 120 60 60 60 80 80 80 80 100 100 100 120 120 120 120 60 60 60 80 80 80 80 100 100 100 120 120 120 120 ];
BPTT= (BPT-mean(BPT))/std(BPT);
TE=[ 0.0710 0.0720 0.1780 0.1920 0.4400 0.5420 0.8030 0.9070 0.2410 0.3320 0.4610 0.5420 0.8160 0.8300 0.1180 0.1470 0.2510 0.3180 0.5240 0.5470 0.7890 0.7900 0.2130 0.3240 0.5160 0.5670 0.8560 0.9510 0.128 0.258 0.629 0.081 0.347 0.654 0.894 0.185 0.454 0.657 0.033 0.425 0.670 1.056 0.134 0.356 0.709 0.163 0.461 0.654 0.894 0.248 0.505 0.756 0.116 0.437 0.764 1.154];
TEE=(TE-mean(TE))/std(TE);
p=[sall;BPTT];
%division de donées
sal1=[0.6186 0.6369 1.5707 1.6867 3.735 4.5285 6.4212 7.1354 1.8504 2.5375 3.469 4.0254 5.8352 5.9126 0.7981 1.001 1.7117 2.151 3.473 3.618 5.0555 5.0648 1.2813 1.9457 3.0582 3.3534 4.911 5.4038] ;
sal1=(sal1-mean(sal))/std(sal);
BPT1=[60 60 60 60 60 60 60 60 80 80 80 80 80 80 100 100 100 100 100 100 100 100 120 120 120 120 120 120];
BPT1=(BPT1-mean(BPT))/std(BPT);
TE1=[ 0.0710 0.0720 0.1780 0.1920 0.4400 0.5420 0.8030 0.9070 0.2410 0.3320 0.4610 0.5420 0.8160 0.8300 0.1180 0.1470 0.2510 0.3180 0.5240 0.5470 0.7890 0.7900 0.2130 0.3240 0.5160 0.5670 0.8560 0.9510] ;
TE1=(TE1-mean(TE))/std(TE);
trainv.P=[sal1;BPT1] ;
trainv.T=TE1 ;
sal2=[1.1263 2.2542 5.178 0.6239 2.643 4.779 6.3231 1.2566 3.03 4.281 0.19101 2.5357 3.9086 5.9291];
sal2=(sal2-mean(sal))/std(sal);
BPT2= [60 60 60 80 80 80 80 100 100 100 120 120 120 120 ] ;
BPT2=(BPT2-mean(BPT))/std(BPT);
TE2= [ 0.128 0.258 0.629 0.081 0.347 0.654 0.894 0.185 0.454 0.657 0.033 0.425 0.670 1.056];
TE2=(TE2-mean(TE))/std(TE) ;
valv.P=[sal2;BPT2] ;
valv.T=TE2;
sal3=[ 1.1735 3.0542 5.7635 1.253 3.467 5.3929 6.4064 1.683 3.3541 4.876 0.6887 2.6012 4.4208 6.4108];
sal3=(sal3-mean(sal))/std(sal);
BPT3= [60 60 60 80 80 80 80 100 100 100 120 120 120 120] ;
BPT3=(BPT3-mean(BPT))/std(BPT);
TE3= [ 0.134 0.356 0.709 0.163 0.461 0.654 0.894 0.248 0.505 0.756 0.116 0.437 0.764 1.154];
TE3=(TE3-mean(TE))/std(TE) ;
testv.P=[sal3;BPT3];
testv.T=TE3 ;
%apprentissage de reseaux
pr=minmax(p);
net=newff(pr,[4 1],{'tansig' 'purelin'});
[net,tr]=train( net,trainv.P,trainv.T,[],[],valv,testv)
%affichage de poids et de biais de couche d'entrée
net.IW{1,1}
net.b{1}
%affichage de poids et de biais de couche de sortie
net.LW{2}
net.b{2}
fais "copier coller" et lance le programme dans matlab , vois le résultats de poids et de biais et après fais une autre fois"coller "dans la même spacework et vois les nouveaux résultats
merci;);)
J'ai testé rapidement, effectivement les poids et les biais changent pas mal mais les performances du réseau (i.e. la valeur de sim(net,[0;2]) par exemple) sont à peu près les mêmes... donc je pense que cela veut dire simplement que le réseau ne converge pas vers une structure particulière. Il faudrait probablement analyser cela avantage, mais malheureusement je n'ai pas le temps en ce moment.
Au passage la ligne "net.trainParam.showWindow = false;" qui désactive l'affichage de la fenêtre d'apprentissage t'intéressera peut-être pour ce genre de test.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 % les données de reseaux (l'entrée: (sal, BPT ), la sortie:TE sal=[0.6186 0.6369 1.5707 1.6867 3.735 4.5285 6.4212 7.1354 1.8504 2.5375 3.469 4.0254 5.8352 5.9126 0.7981 1.001 1.7117 2.151 3.473 3.618 5.0555 5.0648 1.2813 1.9457 3.0582 3.3534 4.911 5.4038 1.1263 2.2542 5.178 0.6239 2.643 4.779 6.3231 1.2566 3.03 4.281 0.19101 2.5357 3.9086 5.9291 1.1735 3.0542 5.7635 1.253 3.467 5.3929 6.4064 1.683 3.3541 4.876 0.6887 2.6012 4.4208 6.4108]; sall=(sal-mean(sal))/std(sal); BPT=[60 60 60 60 60 60 60 60 80 80 80 80 80 80 100 100 100 100 100 100 100 100 120 120 120 120 120 120 60 60 60 80 80 80 80 100 100 100 120 120 120 120 60 60 60 80 80 80 80 100 100 100 120 120 120 120 ]; BPTT= (BPT-mean(BPT))/std(BPT); TE=[ 0.0710 0.0720 0.1780 0.1920 0.4400 0.5420 0.8030 0.9070 0.2410 0.3320 0.4610 0.5420 0.8160 0.8300 0.1180 0.1470 0.2510 0.3180 0.5240 0.5470 0.7890 0.7900 0.2130 0.3240 0.5160 0.5670 0.8560 0.9510 0.128 0.258 0.629 0.081 0.347 0.654 0.894 0.185 0.454 0.657 0.033 0.425 0.670 1.056 0.134 0.356 0.709 0.163 0.461 0.654 0.894 0.248 0.505 0.756 0.116 0.437 0.764 1.154]; TEE=(TE-mean(TE))/std(TE); p=[sall;BPTT]; %division de donées sal1=[0.6186 0.6369 1.5707 1.6867 3.735 4.5285 6.4212 7.1354 1.8504 2.5375 3.469 4.0254 5.8352 5.9126 0.7981 1.001 1.7117 2.151 3.473 3.618 5.0555 5.0648 1.2813 1.9457 3.0582 3.3534 4.911 5.4038] ; sal1=(sal1-mean(sal))/std(sal); BPT1=[60 60 60 60 60 60 60 60 80 80 80 80 80 80 100 100 100 100 100 100 100 100 120 120 120 120 120 120]; BPT1=(BPT1-mean(BPT))/std(BPT); TE1=[ 0.0710 0.0720 0.1780 0.1920 0.4400 0.5420 0.8030 0.9070 0.2410 0.3320 0.4610 0.5420 0.8160 0.8300 0.1180 0.1470 0.2510 0.3180 0.5240 0.5470 0.7890 0.7900 0.2130 0.3240 0.5160 0.5670 0.8560 0.9510] ; TE1=(TE1-mean(TE))/std(TE); trainv.P=[sal1;BPT1] ; trainv.T=TE1 ; sal2=[1.1263 2.2542 5.178 0.6239 2.643 4.779 6.3231 1.2566 3.03 4.281 0.19101 2.5357 3.9086 5.9291]; sal2=(sal2-mean(sal))/std(sal); BPT2= [60 60 60 80 80 80 80 100 100 100 120 120 120 120 ] ; BPT2=(BPT2-mean(BPT))/std(BPT); TE2= [ 0.128 0.258 0.629 0.081 0.347 0.654 0.894 0.185 0.454 0.657 0.033 0.425 0.670 1.056]; TE2=(TE2-mean(TE))/std(TE) ; valv.P=[sal2;BPT2] ; valv.T=TE2; sal3=[ 1.1735 3.0542 5.7635 1.253 3.467 5.3929 6.4064 1.683 3.3541 4.876 0.6887 2.6012 4.4208 6.4108]; sal3=(sal3-mean(sal))/std(sal); BPT3= [60 60 60 80 80 80 80 100 100 100 120 120 120 120] ; BPT3=(BPT3-mean(BPT))/std(BPT); TE3= [ 0.134 0.356 0.709 0.163 0.461 0.654 0.894 0.248 0.505 0.756 0.116 0.437 0.764 1.154]; TE3=(TE3-mean(TE))/std(TE) ; testv.P=[sal3;BPT3]; testv.T=TE3 ; %apprentissage de reseaux pr=minmax(p); net=newff(pr,[4 1],{'tansig' 'purelin'}); net.trainParam.showWindow = false; [net,tr]=train( net,trainv.P,trainv.T,[],[],valv,testv); %affichage de poids et de biais de couche d'entrée net.IW{1,1} net.b{1} %affichage de poids et de biais de couche de sortie net.LW{2} net.b{2} sim(net,[0;2])
merci francy
je crois que les conditions initiales influencent sur la convergence de réseau j'ai pas compris les paramétrés suivants:
lors de la creation de réseaux
numInputDelays: 0 (read-only)
numLayerDelays: 0 (read-only)
je sais que avec la commande newff se fait la création de réseau et les initialisation des poids et de biais donc comment je peux a ce niveau afficher les poids et les biais initiales
Simplement en commentant la ligne [net,tr]=train( net,trainv.P,trainv.T,[],[],valv,testv); :)Citation:
comment je peux a ce niveau afficher les poids et les biais initiales
avec la commande newff je peux afficher les valeurs finales des bias et des poids mais je veux afficher les valeurs initiales des poids et de biais
Fait :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 % les données de reseaux (l'entrée: (sal, BPT ), la sortie:TE sal=[0.6186 0.6369 1.5707 1.6867 3.735 4.5285 6.4212 7.1354 1.8504 2.5375 3.469 4.0254 5.8352 5.9126 0.7981 1.001 1.7117 2.151 3.473 3.618 5.0555 5.0648 1.2813 1.9457 3.0582 3.3534 4.911 5.4038 1.1263 2.2542 5.178 0.6239 2.643 4.779 6.3231 1.2566 3.03 4.281 0.19101 2.5357 3.9086 5.9291 1.1735 3.0542 5.7635 1.253 3.467 5.3929 6.4064 1.683 3.3541 4.876 0.6887 2.6012 4.4208 6.4108]; sall=(sal-mean(sal))/std(sal); BPT=[60 60 60 60 60 60 60 60 80 80 80 80 80 80 100 100 100 100 100 100 100 100 120 120 120 120 120 120 60 60 60 80 80 80 80 100 100 100 120 120 120 120 60 60 60 80 80 80 80 100 100 100 120 120 120 120 ]; BPTT= (BPT-mean(BPT))/std(BPT); TE=[ 0.0710 0.0720 0.1780 0.1920 0.4400 0.5420 0.8030 0.9070 0.2410 0.3320 0.4610 0.5420 0.8160 0.8300 0.1180 0.1470 0.2510 0.3180 0.5240 0.5470 0.7890 0.7900 0.2130 0.3240 0.5160 0.5670 0.8560 0.9510 0.128 0.258 0.629 0.081 0.347 0.654 0.894 0.185 0.454 0.657 0.033 0.425 0.670 1.056 0.134 0.356 0.709 0.163 0.461 0.654 0.894 0.248 0.505 0.756 0.116 0.437 0.764 1.154]; TEE=(TE-mean(TE))/std(TE); p=[sall;BPTT]; %division de donées sal1=[0.6186 0.6369 1.5707 1.6867 3.735 4.5285 6.4212 7.1354 1.8504 2.5375 3.469 4.0254 5.8352 5.9126 0.7981 1.001 1.7117 2.151 3.473 3.618 5.0555 5.0648 1.2813 1.9457 3.0582 3.3534 4.911 5.4038] ; sal1=(sal1-mean(sal))/std(sal); BPT1=[60 60 60 60 60 60 60 60 80 80 80 80 80 80 100 100 100 100 100 100 100 100 120 120 120 120 120 120]; BPT1=(BPT1-mean(BPT))/std(BPT); TE1=[ 0.0710 0.0720 0.1780 0.1920 0.4400 0.5420 0.8030 0.9070 0.2410 0.3320 0.4610 0.5420 0.8160 0.8300 0.1180 0.1470 0.2510 0.3180 0.5240 0.5470 0.7890 0.7900 0.2130 0.3240 0.5160 0.5670 0.8560 0.9510] ; TE1=(TE1-mean(TE))/std(TE); trainv.P=[sal1;BPT1] ; trainv.T=TE1 ; sal2=[1.1263 2.2542 5.178 0.6239 2.643 4.779 6.3231 1.2566 3.03 4.281 0.19101 2.5357 3.9086 5.9291]; sal2=(sal2-mean(sal))/std(sal); BPT2= [60 60 60 80 80 80 80 100 100 100 120 120 120 120 ] ; BPT2=(BPT2-mean(BPT))/std(BPT); TE2= [ 0.128 0.258 0.629 0.081 0.347 0.654 0.894 0.185 0.454 0.657 0.033 0.425 0.670 1.056]; TE2=(TE2-mean(TE))/std(TE) ; valv.P=[sal2;BPT2] ; valv.T=TE2; sal3=[ 1.1735 3.0542 5.7635 1.253 3.467 5.3929 6.4064 1.683 3.3541 4.876 0.6887 2.6012 4.4208 6.4108]; sal3=(sal3-mean(sal))/std(sal); BPT3= [60 60 60 80 80 80 80 100 100 100 120 120 120 120] ; BPT3=(BPT3-mean(BPT))/std(BPT); TE3= [ 0.134 0.356 0.709 0.163 0.461 0.654 0.894 0.248 0.505 0.756 0.116 0.437 0.764 1.154]; TE3=(TE3-mean(TE))/std(TE) ; testv.P=[sal3;BPT3]; testv.T=TE3 ; %apprentissage de reseaux net.trainParam.show = 2; pr=minmax(p); net=newff(pr,[4 1],{'tansig' 'purelin'}); %net.trainParam.showWindow = false; %net.trainParam.epochs = 1; %[net,tr]=train( net,trainv.P,trainv.T,[],[],valv,testv); %affichage de poids et de biais de couche d'entrée net.IW{1,1} net.b{1} %affichage de poids et de biais de couche de sortie net.LW{2} net.b{2} sim(net,[0;2])
(Comme tu le verras les poids et les biais sont random, regarde la fonction initnw pour les initialiser à la main)
merci énormément francy
il reste une petite chose
j'ai pas compris
numInputDelays
numLayerDelays
et
net.trainParam.show = 2;
net.trainParam.showWindow = false
* Pour net.trainParam.showWindow = false et net.trainParam.show = 2 cf http://www.mathworks.com/help/toolbox/nnet/trainbr.html
* Pour numInputDelays et numLayerDelays cf http://www.mathworks.com/help/toolbo.../network2.html
Un des énormes avantages de MATLAB est sa doc ;)
quelle est la différence entre training function et learning ??
http://www.mathworks.com/products/ne...cription4.html :
Citation:
Training and learning functions are mathematical procedures used to automatically adjust the network's weights and biases. The training function dictates a global algorithm that affects all the weights and biases of a given network. The learning function can be applied to individual weights and biases within a network.
Salut francy
pour choisir le meilleur réseau de neurone j'ai fait une régression linéaire pour ce raison j'ai ajouté à mon programme une boucle while pour imposer m(la pente de la droite de régression à 1 et b (l'ordonnée à l'origine) d'être <0.00001 et r(coefficient de corrélation ) à 1 mais en ajoutant cette boucle mon programme n'a pas tourné il m'affiche une erreur
voici mon code
r=0
m=0
b=1
While r~=1&m~=1&b>0.00001
% les données de reseaux (l'entrée: (sal, BPT ), la sortie:TE
sal=[0.6186 0.6369 1.5707 1.6867 3.735 4.5285 6.4212 7.1354 1.8504 2.5375 3.469 4.0254 5.8352 5.9126 0.7981 1.001 1.7117 2.151 3.473 3.618 5.0555 5.0648 1.2813 1.9457 3.0582 3.3534 4.911 5.4038 1.1263 2.2542 5.178 0.6239 2.643 4.779 6.3231 1.2566 3.03 4.281 0.19101 2.5357 3.9086 5.9291 1.1735 3.0542 5.7635 1.253 3.467 5.3929 6.4064 1.683 3.3541 4.876 0.6887 2.6012 4.4208 6.4108];
sall=(sal-mean(sal))/std(sal);
BPT=[60 60 60 60 60 60 60 60 80 80 80 80 80 80 100 100 100 100 100 100 100 100 120 120 120 120 120 120 60 60 60 80 80 80 80 100 100 100 120 120 120 120 60 60 60 80 80 80 80 100 100 100 120 120 120 120 ];
BPTT= (BPT-mean(BPT))/std(BPT);
TE=[ 0.0710 0.0720 0.1780 0.1920 0.4400 0.5420 0.8030 0.9070 0.2410 0.3320 0.4610 0.5420 0.8160 0.8300 0.1180 0.1470 0.2510 0.3180 0.5240 0.5470 0.7890 0.7900 0.2130 0.3240 0.5160 0.5670 0.8560 0.9510 0.128 0.258 0.629 0.081 0.347 0.654 0.894 0.185 0.454 0.657 0.033 0.425 0.670 1.056 0.134 0.356 0.709 0.163 0.461 0.654 0.894 0.248 0.505 0.756 0.116 0.437 0.764 1.154];
TEE=(TE-mean(TE))/std(TE);
p=[sall;BPTT];
%division de donées
sal1=[0.6186 0.6369 1.5707 1.6867 3.735 4.5285 6.4212 7.1354 1.8504 2.5375 3.469 4.0254 5.8352 5.9126 0.7981 1.001 1.7117 2.151 3.473 3.618 5.0555 5.0648 1.2813 1.9457 3.0582 3.3534 4.911 5.4038] ;
sal1=(sal1-mean(sal))/std(sal);
BPT1=[60 60 60 60 60 60 60 60 80 80 80 80 80 80 100 100 100 100 100 100 100 100 120 120 120 120 120 120];
BPT1=(BPT1-mean(BPT))/std(BPT);
TE1=[ 0.0710 0.0720 0.1780 0.1920 0.4400 0.5420 0.8030 0.9070 0.2410 0.3320 0.4610 0.5420 0.8160 0.8300 0.1180 0.1470 0.2510 0.3180 0.5240 0.5470 0.7890 0.7900 0.2130 0.3240 0.5160 0.5670 0.8560 0.9510] ;
TE1=(TE1-mean(TE))/std(TE);
trainv.P=[sal1;BPT1] ;
trainv.T=TE1 ;
sal2=[1.1263 2.2542 5.178 0.6239 2.643 4.779 6.3231 1.2566 3.03 4.281 0.19101 2.5357 3.9086 5.9291];
sal2=(sal2-mean(sal))/std(sal);
BPT2= [60 60 60 80 80 80 80 100 100 100 120 120 120 120 ] ;
BPT2=(BPT2-mean(BPT))/std(BPT);
TE2= [ 0.128 0.258 0.629 0.081 0.347 0.654 0.894 0.185 0.454 0.657 0.033 0.425 0.670 1.056];
TE2=(TE2-mean(TE))/std(TE) ;
valv.P=[sal2;BPT2] ;
valv.T=TE2;
sal3=[ 1.1735 3.0542 5.7635 1.253 3.467 5.3929 6.4064 1.683 3.3541 4.876 0.6887 2.6012 4.4208 6.4108];
sal3=(sal3-mean(sal))/std(sal);
BPT3= [60 60 60 80 80 80 80 100 100 100 120 120 120 120] ;
BPT3=(BPT3-mean(BPT))/std(BPT);
TE3= [ 0.134 0.356 0.709 0.163 0.461 0.654 0.894 0.248 0.505 0.756 0.116 0.437 0.764 1.154];
TE3=(TE3-mean(TE))/std(TE) ;
testv.P=[sal3;BPT3];
testv.T=TE3 ;
%apprentissage de reseaux
pr=minmax(p);
net=newff(pr,[4 1],{'tansig' 'purelin'});
[net,tr]=train( net,trainv.P,trainv.T,[],[],valv,testv)
%affichage de poids et de biais de couche d'entrée
net.IW{1,1}
net.b{1}
%affichage de poids et de biais de couche de sortie
net.LW{2}
net.b{2}
y=sim(net,p);
y=y*std(TE)+mean(TE);
[m,b,r]=postreg(y,TE)
end
merci ;);););)
Ca devrait tourner :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 r=0 m=0 b=1 while ((r~=1)&(m~=1)&(b>0.00001)) % les données de reseaux (l'entrée: (sal, BPT ), la sortie:TE sal=[0.6186 0.6369 1.5707 1.6867 3.735 4.5285 6.4212 7.1354 1.8504 2.5375 3.469 4.0254 5.8352 5.9126 0.7981 1.001 1.7117 2.151 3.473 3.618 5.0555 5.0648 1.2813 1.9457 3.0582 3.3534 4.911 5.4038 1.1263 2.2542 5.178 0.6239 2.643 4.779 6.3231 1.2566 3.03 4.281 0.19101 2.5357 3.9086 5.9291 1.1735 3.0542 5.7635 1.253 3.467 5.3929 6.4064 1.683 3.3541 4.876 0.6887 2.6012 4.4208 6.4108]; sall=(sal-mean(sal))/std(sal); BPT=[60 60 60 60 60 60 60 60 80 80 80 80 80 80 100 100 100 100 100 100 100 100 120 120 120 120 120 120 60 60 60 80 80 80 80 100 100 100 120 120 120 120 60 60 60 80 80 80 80 100 100 100 120 120 120 120 ]; BPTT= (BPT-mean(BPT))/std(BPT); TE=[ 0.0710 0.0720 0.1780 0.1920 0.4400 0.5420 0.8030 0.9070 0.2410 0.3320 0.4610 0.5420 0.8160 0.8300 0.1180 0.1470 0.2510 0.3180 0.5240 0.5470 0.7890 0.7900 0.2130 0.3240 0.5160 0.5670 0.8560 0.9510 0.128 0.258 0.629 0.081 0.347 0.654 0.894 0.185 0.454 0.657 0.033 0.425 0.670 1.056 0.134 0.356 0.709 0.163 0.461 0.654 0.894 0.248 0.505 0.756 0.116 0.437 0.764 1.154]; TEE=(TE-mean(TE))/std(TE); p=[sall;BPTT]; %division de donées sal1=[0.6186 0.6369 1.5707 1.6867 3.735 4.5285 6.4212 7.1354 1.8504 2.5375 3.469 4.0254 5.8352 5.9126 0.7981 1.001 1.7117 2.151 3.473 3.618 5.0555 5.0648 1.2813 1.9457 3.0582 3.3534 4.911 5.4038] ; sal1=(sal1-mean(sal))/std(sal); BPT1=[60 60 60 60 60 60 60 60 80 80 80 80 80 80 100 100 100 100 100 100 100 100 120 120 120 120 120 120]; BPT1=(BPT1-mean(BPT))/std(BPT); TE1=[ 0.0710 0.0720 0.1780 0.1920 0.4400 0.5420 0.8030 0.9070 0.2410 0.3320 0.4610 0.5420 0.8160 0.8300 0.1180 0.1470 0.2510 0.3180 0.5240 0.5470 0.7890 0.7900 0.2130 0.3240 0.5160 0.5670 0.8560 0.9510] ; TE1=(TE1-mean(TE))/std(TE); trainv.P=[sal1;BPT1] ; trainv.T=TE1 ; sal2=[1.1263 2.2542 5.178 0.6239 2.643 4.779 6.3231 1.2566 3.03 4.281 0.19101 2.5357 3.9086 5.9291]; sal2=(sal2-mean(sal))/std(sal); BPT2= [60 60 60 80 80 80 80 100 100 100 120 120 120 120 ] ; BPT2=(BPT2-mean(BPT))/std(BPT); TE2= [ 0.128 0.258 0.629 0.081 0.347 0.654 0.894 0.185 0.454 0.657 0.033 0.425 0.670 1.056]; TE2=(TE2-mean(TE))/std(TE) ; valv.P=[sal2;BPT2] ; valv.T=TE2; sal3=[ 1.1735 3.0542 5.7635 1.253 3.467 5.3929 6.4064 1.683 3.3541 4.876 0.6887 2.6012 4.4208 6.4108]; sal3=(sal3-mean(sal))/std(sal); BPT3= [60 60 60 80 80 80 80 100 100 100 120 120 120 120] ; BPT3=(BPT3-mean(BPT))/std(BPT); TE3= [ 0.134 0.356 0.709 0.163 0.461 0.654 0.894 0.248 0.505 0.756 0.116 0.437 0.764 1.154]; TE3=(TE3-mean(TE))/std(TE) ; testv.P=[sal3;BPT3]; testv.T=TE3 ; %apprentissage de reseaux pr=minmax(p); net=newff(pr,[4 1],{'tansig' 'purelin'}); [net,tr]=train( net,trainv.P,trainv.T,[],[],valv,testv) %affichage de poids et de biais de couche d'entrée net.IW{1,1} net.b{1} %affichage de poids et de biais de couche de sortie net.LW{2} net.b{2} y=sim(net,p); y=y*std(TE)+mean(TE); [m,b,r]=postreg(y,TE) end
j'ai fait l'apprentissage d'un réseau de neurone j'ai obtenu les poids et les biais , après j'ai crée de nouveau le réseau de neurone par newff et j'ai introduit les valeurs des poids et de bais que j'ai obtenu par l'apprentissage mais lors de simulation de réseau je trouve des valeurs fausses. j'ai pas compris le problème car normalement avec ces valeurs de poids et de biais je dois trouver des bons résultats.
le réseau est un preceptron a deux couche couche cachée et l'autre de sortie
Fausse dans quel sens ? Output du réseau différent de l'output souhaité ? Ou bien output du réseau différent de l'output obtenu en calculant la forward-propagation de l'input à la main ?Citation:
Envoyé par frihat mohamed
Seulement si le réseau "a bien appris" : utilises-tu un ensemble de validation pour valider la qualité de l'apprentissage ?Citation:
Envoyé par frihat mohamed
j'ai fait la creation et l'apprentissage de rseau de neurone
j'ao obtient les pods et le biais avec ces poids et biais les srties de réseau suivent biens les sorties cibles sur les trois ensembles (apprentissage , validation et test) j'ai gardé les valeurs de poids et de bias mais lorsque j'ai crée de nouveau le réseau avec newff et j'ai introduit les valeurs de poids et de bias , lors de lasimulations j'ao obenu des sorties qui sont loin de sorties cibles et meme loin de sortie de réseau de neurones que j'ai obetnu apres l'apprentissage de réseau de neurone , j'ai pa compris le probleme
merci :))