亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? quickprop.c

?? 神經網絡系統 quickprop算法 大幅提高運算速度
?? C
字號:
/* Quickprop algorithm (developed by Scott Fahlman)
	- a standard modified bp algorithm for comparison
*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <string.h>
#include <time.h>

#define GA          1
#define S           1 	        /* generalized BP with the S parameter */
#define mu          1.75        /* maximum grouth factor */
#define threshold   0.0 	/* mode switch threshold */
#define ERRORLEVEL  0.001	/* stopping criteria */
#define NITERATIONS 3000	/* no. of iterations to be run */
#define P           4     	/* no. of patterns to be trained */
#define I           2          /* no. of input nodes */
#define H           2         	/* no. of hidden nodes */
#define J           1           /* no. of output nodes */
#define N           9   	/* no. of weights = H*(I+1)+J*(H+1) */
#define weightfile  30    	/* no. of weight files used */


double target[P][J], out0[P][I], out1[P][H], out2[P][J];
double weights[N],delta1[P][H],delta2[P][J];
double dE1[H][I+1],dE2[J][H+1];
double pre_dE1[H][I+1],pre_dE2[J][H+1];
double delw1[H][I+1], delw2[J][H+1];

FILE   *fpRun, *fpPattern, *fpWts;
FILE   *fpWeightsOut, *fpResults, *fpError;

void itoa(n, s)     /* convert integer to character */
int n; char s[];
{
  int i=0;
  if (n/10 ==0)
    s[i++]= n +'0';
  else
  {  
    s[i++] = (n/10)+'0';
    s[i++] = (n%10)+'0';
  }
  s[i] = '\0';
} 

double minimum(a, b)
double a, b;
{
  if (a < b) 
    return a;
  else 
    return b; 
}

double maximum(a, b)
double a, b;
{
  if (a > b) 
    return a;
  else 
    return b; 
}

double sign(a)
double a;
{
  if (a < 0.0)  
    return -1.0; 
  else  
    return 1.0;
} 

main (argc, argv)
int argc;
char *argv[];
{

  double   eta,alpha;
  double   error[20],derror,temp,temp1,sum,dw;
  double   converge=0.0;  
  register int   h,i,j,p,q,r,l,x,min,tmp;
  int      nIterations=NITERATIONS;
  unsigned steady=0,non_conv=0;
  char     szResults[66],szError[66],szPattern[66],szWeightsOut[66];
  char     charstr[12],tmpstr[3];
  double   optwts[N], minerr;
  time_t   t,start,end;

  int offset; /* a value to set the weight files */

  t = time(NULL);      /* randomize the seed for each run */
/*  tmp = srand(t);
*/
  srand(t);

  if (argc < 2)
  {
	 fprintf(stderr, "Usage: %s runfilename\n", argv[0]);
	 exit(1);
  }

  if ((fpRun = fopen(*++argv,"r")) == NULL)
  {
	 fprintf(stderr, "can't open file %s\n", *argv);
	 exit(1);
  }

  offset = atoi(argv[1]);

  fscanf(fpRun, "%s %s %s %s %lf %lf",
			  szResults, szError, szPattern, szWeightsOut, &eta, &alpha);
  fclose(fpRun);

  if ((fpPattern = fopen(szPattern, "r")) == NULL)
  {
	 fprintf(stderr, "can't open file %s\n", szPattern);
	 exit(1);
  }

  for (p=0; p<P; p++)
  {
	for (i=0; i<I; i++)
	  fscanf(fpPattern, "%lf", &out0[p][i]);

	for (j=0; j<J; j++)
	  fscanf(fpPattern, "%lf", &target[p][j]);
  }
  fclose(fpPattern);

  if ((fpError = fopen(szError, "w")) == NULL)
  {
	 fprintf(stderr, "can't open file %s \n", szError);
	 exit(1);
  }

  start = time(NULL);

  for (x=offset; x<weightfile+offset; x++)
  {
	 minerr = 99999999.0; steady=0; 
	 strcpy(charstr,"w");
	 itoa(x,tmpstr);
	 strcat(charstr,tmpstr);
	 strcat(charstr,".wts");
	 if ((fpWts = fopen(charstr,"r")) == NULL)
	 {
		fprintf (stderr, "can't open wts file\n");
		exit(1);
	 }

	 for (h=0; h<H; h++)
		for (i=0; i<=I; i++)
		{
		  fscanf (fpWts, "%lf", &weights[h*(I+1)+i]);
		  delw1[h][i] = 0.0;
                  pre_dE1[h][i] = 0.0;
		}

	 for (j=0; j<J; j++)
		for (h=0; h<=H; h++)
		{
		  fscanf(fpWts, "%lf", &weights[H*(I+1)+j*(H+1)+h]);
		  delw2[j][h] = 0.0;
                  pre_dE2[j][h]= 0.0;
		}

	 fclose(fpWts);


	 /* begin processing */

	 for (q=0; q <= nIterations; q++)
	 {
		/* calculate feed-forward net = forward pass */
		for (p=0; p<P; p++)
		{
		  for (h=0; h<H; h++)
		  {
			 sum = weights[h*(I+1)+I];
			 for (i=0; i< I; i++)
				sum += weights[h*(I+1)+i] * out0[p][i];
			 out1[p][h] = 1.0 / (1.0 + exp(-sum));
		  }

		  for (j=0; j<J; j++)
		  {
			 sum = weights[H*(I+1)+j*(H+1)+H];
			 for (h=0; h< H; h++)
				sum += weights[H*(I+1)+j*(H+1)+h] * out1[p][h];
			 out2[p][j] = 1.0 / (1.0 + exp(-sum));
		  }

		  /* calculate error signals */
		  for (j=0; j<J; j++)
		  {
			 temp = target[p][j]-out2[p][j];
			 temp1= pow(out2[p][j]*(1.0-out2[p][j]),1.0/S);
			 delta2[p][j] = temp * temp1;

		  }
		  for (h=0; h<H; h++)
		  {
			 sum = 0.0; 
			 temp1= pow(out1[p][h]*(1.0-out1[p][h]),1.0/S);
			 for (j=0; j<J; j++)
				sum += delta2[p][j]*weights[H*(I+1)+j*(H+1)+h];
			 delta1[p][h] = sum * temp1;
	     	  }
		}
		/* calculate system error */
		if (q==0) r=0;

		for (p=0, error[r]=0.0; p<P; p++)
		{
		  for (j=0; j<J; j++)
		  {
			 temp = out2[p][j]-target[p][j];
			 error[r] += temp * temp;
		  }
		}
		error[r] /= (P * J);

		if (error[r] < ERRORLEVEL)
		  break;
		if (error[r] < minerr)
		{
		  minerr = error[r];
		  for (l=0; l<N; l++) optwts[l] = weights[l];
		}
		fprintf (stderr,"Iteration %5d/%-5d  Error %lf minerr %lf\r",
				q, nIterations, error[r], minerr);


		/* calculate rate of change of error with respect to weights */
		for (j=0; j<J; j++)
		{
		  dE2[j][H] = 0.0;     
		  for (p=0; p<P; p++)
			 dE2[j][H] += delta2[p][j];

		  for (h=0; h<H; h++)
		  {
			 dE2[j][h] = 0.0; 
			 for (p=0; p<P; p++)
				dE2[j][h] += delta2[p][j] * out1[p][h];
		  }
		}

		for (h=0; h<H; h++)
		{
		  dE1[h][I] = 0.0;  
		  for (p=0; p<P; p++)
			 dE1[h][I] += delta1[p][h];

		  for (i=0; i<I; i++)
		  {
			 dE1[h][i] = 0.0;   
			 for (p=0; p < P; p++)
				dE1[h][i] += delta1[p][h] * out0[p][i];
		  }
		}
		/* calculate weight update rule */
         	for (j=0; j<J; j++)
          	  for (h=0; h<=H; h++)
    		  { 
                    dw = 0.0;
               	    if (delw2[j][h] > threshold)
                    {
                       if (dE2[j][h] > 0.0)
                         dw += eta*dE2[j][h];
                       if (dE2[j][h] > (mu/(1.0+mu))*pre_dE2[j][h])
                         dw += mu*delw2[j][h];
                       else 
        	         dw +=dE2[j][h]/(pre_dE2[j][h]-dE2[j][h])*delw2[j][h];
	  	    } 
                    else if (delw2[j][h] < -threshold)
                    {
                       if (dE2[j][h] <0.0)
                         dw += eta*dE2[j][h];
                       if (dE2[j][h] < (mu/(1.0+mu))*pre_dE2[j][h])
                         dw += mu*delw2[j][h];
                       else 
        	         dw +=dE2[j][h]/(pre_dE2[j][h]-dE2[j][h])*delw2[j][h];
                    }
                    else 
                      dw += eta*dE2[j][h]+alpha*delw2[j][h];
		    weights[H*(I+1)+j*(H+1)+h] += dw;
                    pre_dE2[j][h] = dE2[j][h];
	            delw2[j][h] = dw;
		  }	    
	
         	for (h=0; h<H; h++)
          	  for (i=0; i<=I; i++)
    		  {
                    dw = 0.0;
               	    if (delw1[h][i] > threshold)
                    {
                       if (dE1[h][i] >0.0)
                         dw += eta*dE1[h][i];
                       if (dE1[h][i] > (mu/(1+mu))*pre_dE1[h][i])
                         dw += mu*delw1[h][i];
                       else 
        	         dw +=dE1[h][i]/(pre_dE1[h][i]-dE1[h][i])*delw1[h][i];
	  	    }
                    else if (delw1[h][i] < -threshold) 
                    {
                       if (dE1[h][i] >0.0)
                         dw += eta*dE1[h][i];
                       if (dE1[h][i] < (mu/(1+mu))*pre_dE1[h][i])
                         dw += mu*delw1[h][i];
                       else 
        	         dw +=dE1[h][i]/(pre_dE1[h][i]-dE1[h][i])*delw1[h][i];
                    }
                    else
                      dw += eta*dE1[h][i]+alpha*delw1[h][i];
		    weights[h*(I+1)+i] += dw;
		    pre_dE1[h][i] = dE1[h][i];
	            delw1[h][i] = dw;
		  }	    

		fprintf (fpError, "%lf\n", error[r]);

	        if (++r==10) r=0;
	 }

	 /* end processing */
	 printf ("Iteration %5d/%-5d  Error %lf minerr %lf\n",q-1,nIterations,error[r],minerr);
	 if (q-1 == NITERATIONS)
	   non_conv ++;
	 else
           converge += q-1;
         fprintf (stderr,"\n");
	 fprintf (fpError, "%lf\n", error[r]);
	 fclose(fpError);

  }
  end = time(NULL);
  printf ("\nElapsed time = %ld sec\n",(long)end - (long)start);

  printf ("The avg rate is %5.2lf, percentage of conv is %5.2lf\n\n",converge/(weightfile-non_conv),(double)(weightfile-non_conv)/weightfile*100);
  if ((fpWeightsOut = fopen(szWeightsOut, "w")) == NULL)
  {
	  fprintf(stderr, "can't write file %s\n", szWeightsOut);
	  exit(1);
  }

  for (h=0; h < H; h++)
	for (i=0; i <= I; i++)
	  fprintf(fpWeightsOut, "%9.6f%c", weights[h*(I+1)+i],
				(i == I) ? '\n':' ');
  for (j=0; j < J; j++)
	for (h=0; h <= H; h++)
	  fprintf(fpWeightsOut, "%9.6f%c", weights[H*(I+1)+j*(H+1)+h],
			  (h == H) ? '\n':' ');
  fclose(fpWeightsOut);

  if ((fpResults = fopen(szResults,"w")) == NULL)
  {
	 fprintf(stderr, "can't write file %s\n", szResults);
	 fpResults = stderr;
  }

  for (p=0; p<P; p++)
  {
	 fprintf(fpResults, "%d   ", p);

	 for (j=0; j < J; j++)
		fprintf(fpResults, " %lf", out2[p][j]);
	 fprintf (fpResults,"\n");
  }
  fclose(fpResults);
  return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人精品二区三区99精品| 欧美日韩一本到| 久久se精品一区二区| 婷婷中文字幕综合| 香蕉久久一区二区不卡无毒影院| 一区二区三区小说| 亚洲国产另类av| 午夜电影网亚洲视频| 日韩在线卡一卡二| 蜜桃av噜噜一区二区三区小说| 日本亚洲天堂网| 精品在线免费观看| 国产一区二区福利视频| 成人在线视频一区二区| 91亚洲午夜精品久久久久久| 91成人国产精品| 5月丁香婷婷综合| xfplay精品久久| 国产精品毛片久久久久久久| 亚洲欧美另类久久久精品2019| 一区二区三区鲁丝不卡| 轻轻草成人在线| 国产传媒久久文化传媒| 一本久久综合亚洲鲁鲁五月天| 欧美中文字幕不卡| 日韩欧美国产精品一区| 亚洲国产精品精华液ab| 亚洲精品ww久久久久久p站| 婷婷成人综合网| 国产精品一区二区在线观看不卡 | 国产精品一区二区在线看| 国产99久久久国产精品潘金| 色婷婷综合久久| 日韩精品中文字幕一区| 国产精品久久久久久久久果冻传媒 | 捆绑紧缚一区二区三区视频| 成人免费精品视频| 6080国产精品一区二区| 中文字幕一区二区视频| 久久精品国产一区二区三区免费看| 国产河南妇女毛片精品久久久| 在线观看国产91| 国产欧美日韩不卡免费| 亚洲v中文字幕| 成人在线视频一区二区| 日韩精品一区二区三区swag| 亚洲免费观看高清完整版在线观看熊 | 国产精品白丝在线| 精品写真视频在线观看| 欧美丝袜第三区| 日本一区二区三区国色天香| 青青草成人在线观看| 91首页免费视频| 国产亲近乱来精品视频| 久久精品国产亚洲一区二区三区| 91久久奴性调教| 亚洲婷婷在线视频| 国产999精品久久久久久绿帽| 日韩一区二区免费视频| 石原莉奈在线亚洲三区| 91尤物视频在线观看| 国产日产欧美一区二区三区| 精品亚洲欧美一区| 91精品国产麻豆国产自产在线 | 日本怡春院一区二区| 欧美日韩精品专区| 一区二区在线免费| 色综合久久久久综合体桃花网| 欧美经典一区二区| 国产乱子轮精品视频| 久久综合色综合88| 国产高清一区日本| 亚洲国产经典视频| 丁香桃色午夜亚洲一区二区三区| 国产性天天综合网| 国产成人免费在线观看不卡| 久久亚洲影视婷婷| 国产精品一区二区不卡| 国产人伦精品一区二区| 成人黄色大片在线观看| 国产精品久久福利| av电影在线观看一区| 亚洲欧美aⅴ...| 在线观看免费一区| 丝袜美腿高跟呻吟高潮一区| 日韩欧美国产综合一区| 国产综合色视频| 国产精品国产馆在线真实露脸| 97国产一区二区| 性做久久久久久| 亚洲精品一区在线观看| 大胆欧美人体老妇| 亚洲摸摸操操av| 欧美一区二区三区免费| 国产一区二区看久久| 亚洲日本乱码在线观看| 欧美精品粉嫩高潮一区二区| 九九精品一区二区| 国产精品人成在线观看免费| 色偷偷成人一区二区三区91| 热久久国产精品| 国产精品麻豆视频| 欧美午夜不卡在线观看免费| 蜜臀久久99精品久久久久宅男| 国产亚洲精品免费| 91成人国产精品| 国产在线视频一区二区| 亚洲图片激情小说| 日韩精品在线网站| 91久久精品一区二区二区| 日本欧洲一区二区| 成人欧美一区二区三区白人| 这里只有精品电影| 91亚洲资源网| 国产精品一区专区| 日韩二区三区在线观看| 国产精品国产三级国产专播品爱网 | 亚洲男同性恋视频| 精品国产乱码久久久久久图片| 在线观看日韩av先锋影音电影院| 韩国成人在线视频| 午夜亚洲福利老司机| 国产精品青草综合久久久久99| 欧美性一级生活| 成人app软件下载大全免费| 日本在线不卡一区| 一区二区视频在线| 欧美国产精品中文字幕| 日韩精品一区二区三区在线播放 | 3atv在线一区二区三区| 91尤物视频在线观看| 国产高清不卡二三区| 爽爽淫人综合网网站| 中文字幕色av一区二区三区| 久久精品亚洲精品国产欧美| 88在线观看91蜜桃国自产| 欧亚洲嫩模精品一区三区| 99久久精品国产观看| 国产精品自拍一区| 麻豆国产欧美日韩综合精品二区| 亚洲午夜精品网| 亚洲最大成人综合| 中文字幕在线观看不卡| 欧美国产日韩一二三区| 国产欧美视频在线观看| 久久嫩草精品久久久精品一| 精品入口麻豆88视频| 日韩精品一区二区在线| 日韩欧美国产小视频| 日韩三级免费观看| 日韩一区国产二区欧美三区| 日韩欧美国产电影| 2021国产精品久久精品| xnxx国产精品| 亚洲国产成人自拍| 亚洲色图一区二区| 一区二区三区在线视频播放| 亚洲欧美激情视频在线观看一区二区三区 | 久草在线在线精品观看| 精品一区二区三区久久久| 久久99精品国产麻豆婷婷洗澡| 久久69国产一区二区蜜臀| 国产在线视频不卡二| 风间由美中文字幕在线看视频国产欧美| 久久99久久99小草精品免视看| 国产精品2024| 91免费视频网址| 欧美综合天天夜夜久久| 3751色影院一区二区三区| 精品裸体舞一区二区三区| 久久久久久久久久久黄色| 中文字幕日本不卡| 亚洲电影一级黄| 精品一区二区三区视频在线观看| 国产精品一卡二卡在线观看| 91亚洲大成网污www| 欧美日韩中文字幕一区| 欧美一卡2卡三卡4卡5免费| 久久亚洲春色中文字幕久久久| 国产精品久久久一本精品| 亚洲一线二线三线久久久| 美女视频黄 久久| 成人精品视频一区| 欧美日韩精品一区二区三区蜜桃| 欧美成人video| 亚洲精品国产a| 精品一区二区在线观看| jlzzjlzz欧美大全| 欧美一区二区免费视频| 日韩一区在线播放| 天堂一区二区在线| 成人一区二区视频| 91精品国产91久久久久久最新毛片 | 亚洲色图在线视频| 九九久久精品视频| 欧美性猛交xxxxxxxx| 国产情人综合久久777777| 天天av天天翘天天综合网色鬼国产| 国产麻豆成人传媒免费观看| 欧美日韩一区不卡|