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

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

?? bp_backfinal.cpp

?? BP分類器
?? CPP
字號:
#define ESC				27
#define ERRORLEVEL		0.000001
#define ITEMS			5
/*typedefs and prototypes for dynamic storage of arrays*/
typedef float	*PFLOAT;
typedef PFLOAT	VECTOR;
typedef PFLOAT	*MATRIX;
void VectorAllocate(VECTOR *vector, int nCols);
void AllocateCols(PFLOAT matrix[], int nRows, int nCols);
void MatrixAllocate(MATRIX *pmatrix, int nRows, int nCols);
void MatrixFree(MATRIX matrix, int nRows);
/*define storage for net layers*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
MATRIX	out0;		/*input layers						*/
MATRIX	out1;		/*hidden layer						*/
MATRIX	delta1;		/*delta at hidden layer				*/
MATRIX	delw1;		/*change in weights input:hidden	*/
MATRIX	w1;			/*weights input:hidden				*/
MATRIX  out2;		/*output layer						*/
MATRIX  delta2;		/*delta at output layer				*/
MATRIX	delw2;		/*change in weights hidden:output	*/
MATRIX	w2;			/*weights hidden:output				*/
MATRIX	target;		/*target output						*/
VECTOR	PatternID;	/*identifier for each stored pattern*/
int main(int argc, char* argv[])
{
	double	eta = 0.15,	alpha = 0.075;
	int		nReportErrors = 10;	/*error reporting frequency*/	  
	double	ErrorLevel =double(ERRORLEVEL);/*satisfactory error level */
	char	MonitorError = 0;		/*true when monitor error display*/
	double	error;					/*latest sum squared error value*/
	int		h,i,j;					/*index hidden,input,output layer*/
	int		p,                    /* index pattern number              */
			q,                    /* index iteration number            */
			r,                    /* index run number                  */
			nPatterns,            /* number of patterns desired        */
			nInputNodes,          /* number of input nodes             */
			nHiddenNodes,         /* number of hidden nodes            */
			nOutputNodes,         /* number of output nodes            */
			nIterations,          /* number of iterations desired      */
			nRuns;                /* number of runs (or input lines)   */
	FILE	*fpRun,               /* run file                          */
			*fpPattern,           /* source pattern input file         */
			*fpWeights,           /* initial weight file               */
			*fpWeightsOut,        /* final weight output file          */
			*fpResults,           /* results output file               */
			*fpError;             /* error output file                 */
	char  szResults[66];        /* various filenames (pathnames)     */
	char  szError[66];
	char  szPattern[66];
	char  szWeights[66];
	char  szWeightsOut[66];
	char  *progname  =  *argv;  /* name of executable DOS 3.x only  */
    char  farg[200] ;
	printf("input file name:\n") ;
	scanf("%s",farg) ;
	if ((fpRun = fopen(farg, "r"))   ==   NULL)
	{
		fprintf(stderr, "%s: can't open file %s\n", progname, *argv);
		exit(1);
	}
	/* Read first line: no. of runs (lines to read from run file) */
	fscanf(fpRun,  "%d",  &nRuns);
	/*--------------------- beginning of work loop -------------------------*/
	for (r = 0;   r < nRuns;   r++)
	{
		/* read and parse the run specification line; */
		fscanf(fpRun,
			"%s %s %s %s %s %d %d %d %d %d %f %f",
			szResults,          /* output results file */
			szError,            /* error output file */
			szPattern,          /* pattern input file */
			szWeights,          /* initial weights file */
			szWeightsOut,       /* final weights output file */
			&nPatterns,         /* number of patterns to learn */
			&nIterations,       /* number of iterations through the data */
			&nInputNodes,       /* number of input nodes  */
			&nHiddenNodes,      /* number of hidden nodes */
			&nOutputNodes,      /* number of output nodes */
			&eta,               /* learning rate */
			&alpha);            /* momentum factor */
		/*----------allocate dynamic storage for all data ---------------*/
		MatrixAllocate(&out0,      nPatterns,    nInputNodes);
		MatrixAllocate(&out1,      nPatterns,    nHiddenNodes);
		MatrixAllocate(&out2,      nPatterns,    nOutputNodes);
		MatrixAllocate(&delta2,    nPatterns,    nOutputNodes);
		MatrixAllocate(&delw2,     nOutputNodes, nHiddenNodes + 1);
		MatrixAllocate(&w2,        nOutputNodes, nHiddenNodes + 1);
		MatrixAllocate(&delta1,    nPatterns,    nHiddenNodes);
		MatrixAllocate(&delw1,     nHiddenNodes, nInputNodes + 1);
		MatrixAllocate(&w1,        nHiddenNodes, nInputNodes + 1);
		MatrixAllocate(&target,    nPatterns,    nOutputNodes);
		VectorAllocate(&PatternID, nPatterns);
		/*--------- 讀入初始權重: -------------------*/
		if ((fpWeights = fopen(szWeights,"r"))  ==  NULL)
		{
			fprintf(stderr,  "%s: can't open file %s\n",  progname, szWeights);
			exit(1);
		}
		/* read input:hidden weights */
		for (h = 0;  h < nHiddenNodes;  h++)
			for (i = 0;  i <= nInputNodes;  i++)
			{
				fscanf(fpWeights,  "%f",      &w1[h][i]);
				delw1[h][i] = 0.0;
			}
		/* read hidden:out weights */
		for (j = 0;  j < nOutputNodes;  j++)
			for (h = 0;  h <= nHiddenNodes;  h++)
			{
				fscanf(fpWeights,  "%f",      &w2[j][h]);
				delw2[j][h] = 0.0;
			}
		fclose(fpWeights);
		/*------------ Read in all patterns to be learned:----------------*/
		if ((fpPattern = fopen(szPattern, "r"))  ==  NULL)
		{
			fprintf(stderr,  "%s: can't open file %s\n",  progname, szPattern);
			exit(1);
		}
		for (p = 0;  p < nPatterns;  p++)
		{
			for (i = 0;   i < nInputNodes;   i++)
				if (fscanf(fpPattern,  "%f", &out0[p][i])  != 1 )
					goto  ALLPATTERNSREAD;
			/* read in target outputs for input patterns read */
			for (j = 0;  j < nOutputNodes;  j++)
				fscanf(fpPattern,  "%f",   &target[p][j]);
			/* read in identifier for each pattern */
			fscanf(fpPattern,  "%f ",   &PatternID[p]);
		}
		ALLPATTERNSREAD:
		fclose(fpPattern);
		if (p < nPatterns)
		{
			fprintf(stderr, "%s:  %d out of %d patterns read\n",
                 progname,  p,  nPatterns);
			nPatterns = p;
		}
		/* open error output file */
		if ((fpError = fopen(szError, "w"))  ==  NULL)
		{
			fprintf(stderr,  "%s: can't open file %s\n",  progname, szError);
			exit(1);
		}
      fprintf(stderr,  nIterations > 1  ?  "Training...\n"  :  "Testing\n");
		/*--------------------- begin iteration loop ------------------------*/
		for (q = 0;  q < nIterations;  q++)
		{
			for (p = 0;  p < nPatterns;  p++)
			{
				/*-------------------- hidden layer --------------------------*/
				/* Sum input to hidden layer over all input-weight combinations */
				for (h = 0;  h < nHiddenNodes;  h++)
				{
					double sum = w1[h][nInputNodes];  /* begin with bias  */

					for (i = 0;  i < nInputNodes;  i++)
						sum   +=   w1[h][i]  *  out0[p][i];
					/* Compute output (use sigmoid) */
					out1[p][h]   =   1.0  /  (1.0  +  exp(-sum));
				}
				/*-------------------- output layer --------------------------*/
				for (j = 0;  j < nOutputNodes;  j++)
				{
					double  sum = w2[j][nHiddenNodes];

					for (h = 0;  h < nHiddenNodes;  h++)
						sum  +=   w2[j][h]  *  out1[p][h];
					out2[p][j]  =  1.0  /  (1.0  +  exp(-sum));
				}
				/*-------------------- delta output --------------------------*/
				/* Compute deltas for each output unit for a given pattern */
				for (j = 0;  j < nOutputNodes;  j++)
					delta2[p][j] = (target[p][j] - out2[p][j]) * out2[p][j] * (1.0 - out2[p][j]);
				            /*-------------------- delta hidden --------------------------*/
            				for (h = 0;  h < nHiddenNodes;  h++)
				{
					double  sum = 0.0;

					for (j = 0;  j < nOutputNodes;  j++)
						sum  +=  delta2[p][j] * w2[j][h];
					delta1[p][h]  =  sum  *  out1[p][h]  *  (1.0 - out1[p][h]);
				}
			}		/*end of for p*/
			/*-------------- adapt weights hidden:output ---------------------*/
			for (j = 0;  j < nOutputNodes;  j++)
			{
				double  dw;                  /* delta weight */
				double  sum = 0.0;
				/* grand sum of deltas for each output node for one epoch */
				for (p = 0;  p < nPatterns;  p++)
					sum  +=  delta2[p][j];
				/* Calculate new bias weight for each output unit */
				dw   =   eta * sum  +  alpha * delw2[j][nHiddenNodes];
				w2[j][nHiddenNodes]   +=   dw;
				delw2[j][nHiddenNodes] =   dw;     /* delta for bias */
				/* Calculate new weights */
				for (h = 0;  h < nHiddenNodes;  h++)
				{
					double  sum = 0.0;

					for (p = 0;  p < nPatterns;  p++)
						sum  +=  delta2[p][j] * out1[p][h];
					dw = eta * sum  +  alpha * delw2[j][h];
					w2[j][h] += dw;
					delw2[j][h]  =   dw;
				}
			}   /*end of  for adapt weights hidden:output*/
			/*-------------------- adapt weights input:hidden -----------------*/
			for (h = 0;  h < nHiddenNodes;  h++)
			{
				double  dw;                  /* delta weight */
				double  sum = 0.0;
				for (p = 0;  p < nPatterns;  p++)
					sum  +=  delta1[p][h];
				/* Calculate new bias weight for each hidden unit */
				dw   =   eta * sum  +  alpha * delw1[h][nInputNodes];
				w1[h][nInputNodes]   +=   dw;
				delw1[h][nInputNodes] =   dw;
				/* Calculate new weights */
				for (i = 0;  i < nInputNodes;  i++)
				{
					double  sum = 0.0;

					for (p = 0;  p < nPatterns;  p++)
						sum  +=  delta1[p][h] * out0[p][i];
					dw = eta * sum  +  alpha * delw1[h][i];
					w1[h][i]     +=  dw;
					delw1[h][i]  =   dw;
				}
			}    /*end of for  adapt weights input:hidden */			
			/* -------------- monitor keyboard requests ---------------------*/
			if (kbhit())
			{
				int    c = getch();

				if ((c = toupper(c))  == 'E')
					MonitorError++;
				else if (c == ESC)
					break;              /* Terminate gracefully on quit key */
			}
			/*-------------------- Sum Squared Error ------------------------*/
			if (MonitorError  ||  (q % nReportErrors   ==   0))
			{
				for (p = 0, error = 0.0;   p < nPatterns;   p++)
				{
					for (j = 0;  j < nOutputNodes;  j++)
					{
						double  temp   =   target[p][j] - out2[p][j];
						//error += 1/2*temp * temp;
						error += temp * temp;
					}
				}
				/* Average error per node over all patterns */

			    // error  /=  (nPatterns * nOutputNodes);
				/* Print iteration number and  error value */
				fprintf(stderr,"Iteration %5d/%-5d  Error %f\r", q, nIterations, error); 
				/* to console */
				MonitorError = 0;
				if (q % nReportErrors   ==   0)
					fprintf(fpError, "%d  %f\n",  q,  error);  /* to file */
				/* Terminate when error satisfactory */
				if (error < ErrorLevel)
					break;
			}
		//	cout<<error<<"zkj"<<endl;
		}
		/*-----end of iteration loop -----*/
		for (p = 0, error = 0.0;  p < nPatterns;  p++)
		{
			for (j = 0;  j < nOutputNodes;  j++)
			{
				double  temp   =   target[p][j] - out2[p][j];
				error += temp * temp;
			}
		}
		/* Average error over all patterns */
		error  /=  (nPatterns * nOutputNodes);
		//cout<<error<<"zkj2"<<endl;
		/* Print final iteration number and error value */
		fprintf(stderr, "Iteration %5d/%-5d  Error %f\n", q, nIterations, error); /* to console */
		fprintf(fpError, "\n%d  %f\n",  q,  error);        /* to file */
		fclose(fpError);
		/*---------------- print final weights -------------------------------*/
		if ((fpWeightsOut = fopen(szWeightsOut,"w"))  ==  NULL)
		{
			fprintf(stderr,  "%s: can't write file %s\n",  progname, szWeightsOut);
			exit(1);
		}
		for (h = 0;  h < nHiddenNodes;  h++)
			for (i = 0;  i <= nInputNodes;  i++)
				fprintf(fpWeightsOut,  "%g%c", w1[h][i], i%ITEMS==ITEMS-1 ? '\n':' ');
		for (j = 0;  j < nOutputNodes;  j++)
			for (h = 0;  h <= nHiddenNodes;  h++)
				fprintf(fpWeightsOut,  "%g%c", w2[j][h], j%ITEMS==ITEMS-1 ? '\n':' ');
		fclose(fpWeightsOut);
		/*----------------- Print final activation values-------------------- */
		if ((fpResults = fopen(szResults,"w"))  ==  NULL)
		{
			fprintf(stderr,  "%s: can't write file %s\n",  progname, szResults);
			fpResults = stderr;
		}
		/* Print final output vector */
		for (p = 0;  p < nPatterns;  p++)
		{
			fprintf(fpResults, "%d   ",  p);
			for (j = 0;  j < nOutputNodes;  j++)
				fprintf(fpResults, " %f",  out2[p][j]);
			fprintf(fpResults, "  %-6.0f\n", PatternID[p]);
		}
		fclose(fpResults);
		/*---------------- free dynamic storage for data ---------------------*/
		MatrixFree(out0,      nPatterns);
		MatrixFree(out1,      nPatterns);
		MatrixFree(delta1,    nPatterns);
		MatrixFree(delw1,     nHiddenNodes);
		MatrixFree(w1,        nHiddenNodes);
		MatrixFree(out2,      nPatterns);
		MatrixFree(delta2,    nPatterns);
		MatrixFree(delw2,     nOutputNodes);
		MatrixFree(w2,        nOutputNodes);
		MatrixFree(target,    nPatterns);
		free(PatternID);
	}
	fclose(fpRun);                     /* close run file */
	return 0;
}
/*----------------- Array storage allocation routines ---------------------*/
/* Allocate space for vector of double cells for
   one dimensional dynamic vector[cols]*/
void VectorAllocate(VECTOR *vector, int nCols)
{
   if ((*vector = (VECTOR) calloc(nCols, sizeof(double))) == NULL)
   {
      fprintf(stderr, "Sorry! Not enough memory for nodes\n");
      exit(1);
   }
}
/* Allocate space for columns (double cells) for
   dynamic two dimensional matrix[rows][cols]
*/
void AllocateCols(PFLOAT matrix[], int nRows, int nCols)
{
   int  i;
   for (i = 0;  i < nRows;  i++)
      VectorAllocate(&matrix[i], nCols);
}
/* Allocate space for a two dimensional dynamic matrix [rows] [cols]*/
void MatrixAllocate(MATRIX *pmatrix, int nRows, int nCols)
{
   if ( (*pmatrix  =  (MATRIX) calloc(nRows,  sizeof(PFLOAT) ) )   ==  NULL)
   {
      fprintf(stderr, "Sorry! Not enough memory for nodes\n");
      exit(1);
   }
   AllocateCols(*pmatrix, nRows, nCols);
}
/* free space for two dimensional dynamic array */
void MatrixFree(MATRIX matrix,  int nRows)
{
   int   i;
   for (i = 0;  i < nRows;  i++)
      free(matrix[i]);
   free(matrix);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩三级精品电影久久久| 午夜免费欧美电影| 婷婷综合久久一区二区三区| 久草这里只有精品视频| 91黄色免费看| 国产亚洲一区字幕| 麻豆国产欧美日韩综合精品二区| 91片在线免费观看| 国产亚洲精品中文字幕| 免费成人美女在线观看| 欧美日韩二区三区| 亚洲欧美日韩国产另类专区| 久久精品免费观看| 欧美另类久久久品| 亚洲自拍偷拍欧美| 91丨九色porny丨蝌蚪| xvideos.蜜桃一区二区| 日韩黄色免费电影| 欧美图区在线视频| 亚洲欧美日本韩国| 成人免费不卡视频| 欧美高清在线一区二区| 粉嫩久久99精品久久久久久夜| 欧美日韩国产精选| 亚洲va欧美va人人爽| 欧美午夜在线一二页| 亚洲精品成人精品456| 99久久99精品久久久久久| 欧美国产精品v| 成人av免费在线| 国产精品国产a级| 成人av在线影院| 国产精品国产a| 日本国产一区二区| 亚洲一区二区三区四区在线| 精品1区2区3区| 日韩成人午夜精品| 精品免费国产二区三区| 国产精品一二三四区| 中文字幕不卡在线观看| 北条麻妃一区二区三区| 亚洲美腿欧美偷拍| 欧美性猛交xxxx乱大交退制版| 午夜天堂影视香蕉久久| 欧美高清视频不卡网| 免费成人小视频| 久久久精品综合| 99九九99九九九视频精品| 亚洲最大成人网4388xx| 3d动漫精品啪啪1区2区免费| 久久成人羞羞网站| 国产精品色在线| 欧美日韩精品一区二区天天拍小说| 日日夜夜精品视频免费| 久久久久国产精品厨房| 色呦呦国产精品| 蜜臀av性久久久久av蜜臀妖精| 国产色91在线| 91久久精品网| 玖玖九九国产精品| 亚洲三级电影网站| 日韩一卡二卡三卡国产欧美| 国产精品羞羞答答xxdd| 亚洲激情第一区| 精品理论电影在线| 色婷婷久久99综合精品jk白丝 | 久久久久国产精品免费免费搜索| 97精品久久久午夜一区二区三区 | 欧美v日韩v国产v| 99久久伊人精品| 日韩av电影免费观看高清完整版 | 国产精品丝袜一区| 欧美精品在线一区二区| 国产a久久麻豆| 亚洲午夜免费电影| 日本一区二区三区在线观看| 欧美色倩网站大全免费| 国产九色精品成人porny| 一区二区激情小说| 久久人人超碰精品| 欧美日韩在线播放| 不卡的av中国片| 美女视频一区在线观看| 亚洲尤物视频在线| 国产精品全国免费观看高清 | 欧美私人免费视频| 丁香婷婷综合网| 麻豆精品精品国产自在97香蕉| 欧美韩日一区二区三区| 日韩精品专区在线影院重磅| 91精品办公室少妇高潮对白| 国产一区 二区 三区一级| 午夜激情一区二区三区| ㊣最新国产の精品bt伙计久久| 精品国产乱码久久久久久1区2区 | 日本美女一区二区三区| 亚洲精品乱码久久久久久 | 欧美一区二区黄| 欧美在线观看禁18| 99精品国产一区二区三区不卡| 国内欧美视频一区二区| 极品尤物av久久免费看| 日韩av一区二| 奇米影视一区二区三区| 午夜精品久久久久| 亚洲国产欧美一区二区三区丁香婷| 亚洲免费视频中文字幕| 亚洲人快播电影网| 亚洲免费观看高清完整版在线 | 中文字幕亚洲成人| 日本一区二区不卡视频| 久久综合色婷婷| 欧美精品一区二区三区高清aⅴ | 国内精品国产三级国产a久久| 免费观看一级特黄欧美大片| 天天综合色天天综合| 亚洲已满18点击进入久久| 亚洲综合网站在线观看| 亚洲天堂网中文字| 一区二区国产视频| 亚洲v精品v日韩v欧美v专区| 五月天激情综合| 蜜臀av国产精品久久久久| 狠狠色伊人亚洲综合成人| 国产乱码精品一区二区三区五月婷 | 亚洲天堂网中文字| 亚洲一区在线电影| 蜜桃视频在线观看一区二区| 久久99久久久久久久久久久| 国产美女精品在线| 99精品在线免费| 欧美日韩国产电影| 久久久亚洲欧洲日产国码αv| 国产欧美一区二区精品性| 亚洲色图欧美偷拍| 日韩和欧美一区二区| 黑人巨大精品欧美黑白配亚洲| 国产精品亚洲第一区在线暖暖韩国 | 亚洲综合免费观看高清完整版在线| 亚洲丰满少妇videoshd| 精品影视av免费| 不卡av在线免费观看| 欧美午夜影院一区| 久久久久国产精品人| 一区二区三区欧美日| 免费观看一级欧美片| 成人99免费视频| 欧美一区二区久久久| 国产精品毛片大码女人| 性欧美大战久久久久久久久| 国产一区在线观看视频| 色视频成人在线观看免| 日韩精品综合一本久道在线视频| 国产精品不卡在线观看| 日韩精品欧美精品| 91免费视频网| www国产成人免费观看视频 深夜成人网| 亚洲欧美综合在线精品| 性做久久久久久久免费看| 岛国一区二区三区| 91精品久久久久久蜜臀| 中文字幕亚洲一区二区va在线| 奇米精品一区二区三区在线观看 | 国产二区国产一区在线观看| 欧美日韩mp4| 亚洲欧洲韩国日本视频| 国产在线视频精品一区| 欧美色偷偷大香| 欧美国产日韩亚洲一区| 久久精品国产一区二区| 欧美色图第一页| 亚洲人成精品久久久久久| 国产69精品久久久久毛片| 精品少妇一区二区三区免费观看| 亚洲精选在线视频| 成人三级伦理片| 久久久久久久久蜜桃| 美国十次了思思久久精品导航| 欧美视频一区二区在线观看| 亚洲国产精品99久久久久久久久 | 91精品久久久久久蜜臀| 亚洲一区免费视频| 日本精品一区二区三区四区的功能| 国产三级欧美三级| 狠狠色狠狠色综合| 精品国产电影一区二区| 麻豆精品一二三| 欧美v国产在线一区二区三区| 日韩精品视频网| 在线综合亚洲欧美在线视频| 亚洲自拍都市欧美小说| 欧美性xxxxxx少妇| 亚洲午夜精品久久久久久久久| 色婷婷国产精品综合在线观看| 亚洲视频综合在线| 91视频免费观看| 亚洲一区视频在线观看视频| 欧洲av一区二区嗯嗯嗯啊| 依依成人综合视频| 欧美色偷偷大香|