📄 mainback.c
字号:
/* Main file backpropagation */#include "defs.h"#include "sim.h"#include "ind.h"#include "back.h"extern char *optarg;extern int optind;char *OutOptStr() {return "l:f:i:r:\0";}char *OutUsage() {return "Output Parameters:\n" "-l <frequency of log-output>: auto\n" "-f <show weights (0/1/2)>: 0\n" "-i <show parameter info (0/1)>: 1\n" "-r <show statistic (0/1/2)>: 1\0\n";}#define DEFLOG AUTO#define DEFFIRST 0#define DEFINFO 1#define DEFSTAT 1/* set default values */int OptLog =DEFLOG;int OptFirst =DEFFIRST;int OptInfo =DEFINFO;int OptStat =DEFSTAT;int Iter; /* current generation */int StartTime;int EndTime;#define SimTime() (gettime()-StartTime)int handleOutOpt(char opt,char* arg){ switch(opt) { case 'l': OptLog =getint(arg,0,1000000000); return 0; case 'f': OptFirst =getint(arg,0,2); return 0; case 'i': OptInfo =getint(arg,0,1); return 0; case 'r': OptStat =getint(arg,0,2); return 0; default: return 1; };}int initOut(){ StartTime=gettime(); if(OptLog==AUTO) { if(MaxIter<=10) OptLog=1; else OptLog=rounddec(500000/((1+Nin+Nout)* (1+Nhid)*Ntrain)); }; return 0;}void errorexit(char *s){ printf("%s",s); exit(1);}void printinfo(){ printf("Simulation Parameters:\n%s%s%s\n", SimParamStr,NetParamStr,BackParamStr);}void printlog(){ printf("Iter%7d: t=%7ld, NetErr=%8.4f\n",Iter,SimTime(),NetErr); if(OptFirst==2) printnet(); }void printstat(){ float t,i,e,u; t=SimTime(); if(t==0.0) t=1.0; i=Iter; e=BackCalcs; u=e*((Nin+1)*Nhid+(Nhid+1)*Nout); printf("\n" "Statistic total per sec. time\n" "----------------------------------------------------------\n" "Iterations: %10.0f%14.5f%12.6f s\n" "evaluated Patterns:%10.0f%14.5f%12.6f ms\n" "updated Weights: %10.0f%14.0f%12.6f us\n", i,i/t,t/i,e,e/t,1000*t/e,u,u/t,1000000*t/u);}int main(int argc,char **argv){ int opt; char optstr[128]="\0"; strcat(optstr,SimOptStr()); strcat(optstr,NetOptStr()); strcat(optstr,BackOptStr()); strcat(optstr,OutOptStr()); while((opt=getopt(argc,argv,optstr)) != -1) { if( handleSimOpt(opt,optarg) && handleNetOpt(opt,optarg) && handleBackOpt(opt,optarg) && handleOutOpt(opt,optarg) ) { printf("%s\n%s\n%s\n%s", SimUsage(),NetUsage(),BackUsage(),OutUsage()); exit(1); }; }; if(initSim()) errorexit("simulation init failed\n"); if(initNet()) errorexit("individual init failed\n"); if(initBack()) errorexit("backpropagation init failed\n"); if(initOut()) errorexit("output init failed\n"); if(OptInfo) printinfo(); for(Iter=1;Iter<=MaxIter;Iter++) { calcNetErr(); if(NetErr<=MaxErr) { printlog(); if(OptStat) printstat(); if(OptFirst==1) {printf("\n"); printnet();}; printf("\nprogram succeeded.\n"); exit(0); }; if(Iter%OptLog==0 || Iter==1 || Iter==MaxIter) printlog(); updateNet(); }; if(OptStat==2) printstat(); printf("\ntime out - program failed.\n"); exit(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -