#include <> #include <> #include <> #include <> #include <> #define NMHL 5 /*max no. of hidden layers*/ #define NMOU 10 /*max no. of output units*/ #define NMIU 10 /*max no. of input units*/ #define NMIS 200 /*max no. of input samples*/ #define SEXIT 2 /*exit essfully*/ #define FEXIT 1 /*exit in failure*/ #define CONTNE 0 /*continue calculation*/ float eta; /*learning rate*/ float alpha; /*momentum rate*/ float err; /*normalized system error*/ float maxe; /*max allowed system error*/ float maxep; /*max allowed pattern error*/ float *wtp[NMHL+1],*detaw[NMHL+1],*outp[NMHL+2],*errp[NMHL+2]; float target[NMIS][NMOU],input[NMIS][NMIU],output[NMIS][NMOU],ep[NMIS][6]; int nunit[NMHL+2],nhlay,ninps,ninpu,noutpu; int result,count,count_num; char task_name[20]; FILE *fp1,*fp2,*fp3,*fopen(); int fplot10; void init() { int len1,len2,i; float *p1,*p2,*p3,*p4; len1=len2=0; nunit[nhlay+2]=0; for(i=0;i<nhlay+2;i++) { len1+=(nunit[i]+1)*nunit[i+1]; len2+=nunit[i]+1; } p1=(float *) calloc(len1+1,sizeof(float)); p2=(float *) calloc(len2+1,sizeof(float)); p3=(float *) calloc(len2+1,sizeof(float)); p4=(float *) calloc(len1+1,sizeof(float)); wtp[0]=p1; outp[0]=p2; errp[0]=p3; detaw[0]=p4; for(i=1;i<nhlay+1;i++) { wtp[i]=wtp[i-1]+nunit[i]*(nunit[i-1]+1); detaw[i]=detaw[i-1]+nunit[i]*(nunit[i-1]+1); } for(i=1;i<nhlay+2;i++) { outp[i]=outp[i-1]+nunit[i-1]+1; errp[i]=errp[i-1]+nunit[i-1]+1; } for(i=0;i<nhlay+1;i++) { *(outp[i]+nunit[i])=-; }} void qarn() { int i,j; FILE *fp0; char weifile[20]; printf("\n Enter the weights name:"); scanf("%s",weifile); if((fp0=fopen(weifile,"r"))==NULL) { printf("\n File %s doesn't exit",weifile); exit(0); } for(i=0;i<nhlay+1;i++) for(j=0;j<(nunit[i]+1)*nunit[i+1];j++) { fscanf(fp0,"%f",(wtp[i]+j)); *(detaw[i]+j)=; } return; } void setup() { int i,j,k; char filnam[20],type[20]; FILE *fp; printf("\nStart of learning session"); printf("\nEnter the task name:"); scanf("%s",task_name); printf("\n How many units in input p
BP神经网络算法 来自淘豆网m.daumloan.com转载请标明出处.