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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| float nu=0.6;
float a=0.25;
float b=0.5;
int n1=2;**
int n2=4;***
int n3=3;***
*
*
*
******/* Saisie des données*/
*
*float EntreesX[2]={0.9,0.2};
*
double mat_poids_w[2][4]= {{0.5,0.9,0.4,0.6},{0.8,0.9,0.7,0.5}};
double mat_poids_w2[4][3]= {{0.1,0.4,0.2},{0.4,0.9,0.3},{0.5,0.4,0.8},{0.5,0.4,0.8}};
float Sdesire[3]={0.3,0.2,0.90};
float E[4];
float y[4];
double y2[3];
float E2[3];
float erreur[3];
double mat_poids_w_new [2][4];
double mat_poids_w2_new[4][3];
float erreurq=1;
float sommeq;
float somme_produit;
double delta[2];
int i,j,k;
int l=0;
*
***float fct (float erreurq,double *mat_poids_w_new,double *mat_poids_w2_new){
*
*
while (erreurq!=0)
{
*
*
*
****for( j=1;j<n2;j++)
*****{
*********E[j]=0;
*********for(i=1;i<n1;i++)
*********{
*************E[j]+=(EntreesX[i])*(mat_poids_w[i][j]);
*
*
*******}
**y[j]=b+a*E[j];
/*RECUPERATION DES VALEURS DANS UN VECTEUR
AFFICHAGE PRINTF E*/
*
*
//printf("E[%d]==%f\n",j, E[j]);
//printf("y[%d]==%f\n",j, y[j]);
*
****}
****sommeq=0;
*
*****for( k=1;k<=n3;k++)
****{
********E2[k]=0;
*
********for( j=1;j<=n2;j++)
********{
********E2[k]+=(y[j]*mat_poids_w2[j][k]);
****************}
*
y2[k]=b+a*(E2[k]);
*//printf("E2[%d]==%f\n",k, E2[k]);
//printf("y2[%d]==%f\n",k, y2[k]);
*
erreur[k]=Sdesire[k]-y2[k];
*
sommeq=sommeq+pow((Sdesire[k]-y2[k]),2);
*
*
****}
****erreurq=0.5*sommeq;
****//printf("erreurq== %f\n", erreurq);
****/*for (k = 1 ; k <=n3; k++)
****{
***printf("erreur[%d]== %f\n", k, erreur[k]);
****}*/
*
****if(erreurq!=0)
{
*
**
****somme_produit=0;
*
for( k=1;k <= n3;k ++)
{
delta[k]=y2[k]*(1-y2[k])*(Sdesire[k]-y2[k]);
*
****for(j=1;j <= n2;j ++)
{
mat_poids_w2_new[j][k] += nu*(delta[k]*y2[k]);// ici ou le compilateur indique l'erreur*
*
somme_produit += erreur[k]*mat_poids_w2[j][k];// et ici aussi
delta[j]=y[j]*(1-y[j])*(somme_produit);
//printf("delta [%d]=%f\n",j, delta[j]);
*
****for(i=1;i <= n1;i ++){
mat_poids_w_new[i][j]= mat_poids_w[i][j]+((nu*delta[j])*EntreesX[i]);// de meme ici |
Partager