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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? bp.h

?? MATLAB神經(jīng)網(wǎng)絡(luò)0-9數(shù)字識(shí)別 該程序利用神經(jīng)網(wǎng)絡(luò)對(duì)數(shù)字0-9...遺傳算法優(yōu)化小波神經(jīng)網(wǎng)絡(luò)源程序 基于C語(yǔ)言實(shí)現(xiàn)的人臉識(shí)別
?? H
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):

#include <stdio.h>
#include <math.h> 
#include <time.h>
#include <stdlib.h>
#define BIGRND 32767

double drnd();
double dpn1();
double squash(double x);
double *alloc_1d_dbl(int n);
double *alloc_1d_dbl(int n);
double **alloc_2d_dbl(int m, int n);
void bpnn_initialize(int seed);
void bpnn_randomize_weights(double **w, int m, int n);
void bpnn_zero_weights(double **w, int m, int n);
void bpnn_layerforward(double *l1, double *l2, double **conn, int n1, int n2);
void bpnn_output_error(double *delta, double *target, double *output, int nj);
void bpnn_hidden_error(double* delta_h, int nh, double *delta_o, int no, double **who, double *hidden);
void bpnn_adjust_weights(double *delta, int ndelta, double *ly, int nly, double** w, double **oldw, double eta, double momentum);
void w_weight(double **w,int n1,int n2,char*name);
bool r_weight(double **w,int n1,int n2,char *name);
void w_num(int n1,int n2,int n3,char*name);
bool r_num(int *n,char *name);

void code(BYTE*image ,int *p,int w,int h,int dw);
void BpTrain(HDIB hDIB,int n_hidden,double min_ex,double momentum,double eta ,int width,int height);
void CodeRecognize(HDIB hDIB,int width ,int height ,int n_in ,int n_hidden,int n_out);


/*** 返回0-1的雙精度隨機(jī)數(shù) ***/
double drnd()
{
	return ((double) rand() / (double) BIGRND);
}

/*** 返回-1.0到1.0之間的雙精度隨機(jī)數(shù) ***/
double dpn1()
{
	return ((drnd() * 2.0) - 1.0);
}

double squash(double x)
{
	return (1.0 / (1.0 + exp(-x)));
}
/*** 申請(qǐng)1維雙精度實(shí)數(shù)數(shù)組 ***/

double *alloc_1d_dbl(int n)
{
	double *new1;
	
	new1 = (double *) malloc ((unsigned) (n * sizeof (double)));
	if (new1 == NULL) {
		printf("ALLOC_1D_DBL: Couldn't allocate array of doubles\n");
		return (NULL);
	}
	return (new1);
}

/*** 申請(qǐng)2維雙精度實(shí)數(shù)數(shù)組 ***/

double **alloc_2d_dbl(int m, int n)
{
	int i;
	double **new1;
	
	new1 = (double **) malloc ((unsigned) (m * sizeof (double *)));
	if (new1 == NULL) {
		//	printf("ALLOC_2D_DBL: Couldn't allocate array of dbl ptrs\n");
		return (NULL);
	}
	
	for (i = 0; i < m; i++) {
		new1[i] = alloc_1d_dbl(n);
	}
	
	return (new1);
}

/*** 設(shè)置隨機(jī)數(shù)種子 ***/
void bpnn_initialize(int seed)
{
	//printf("Random number generator seed: %d\n", seed);
	srand(seed);
}

/*** 隨機(jī)初始化權(quán)值 ***/
void bpnn_randomize_weights(double **w, int m, int n)
{
	int i, j;
	
	for (i = 0; i <= m; i++) {
		for (j = 0; j <= n; j++) {
			
			w[i][j] = dpn1();
		}
	}
}
/*** 0初始化權(quán)值 ***/
void bpnn_zero_weights(double **w, int m, int n)
{
	int i, j;
	
	for (i = 0; i <= m; i++) {
		for (j = 0; j <= n; j++) {
			w[i][j] = 0.0;
		}
	}
}

/*********前向傳輸*********/
void bpnn_layerforward(double *l1, double *l2, double **conn, int n1, int n2)
{
	double sum;
	int j, k;
	
	/*** 設(shè)置閾值 ***/
	l1[0] = 1.0;
	
	/*** 對(duì)于第二層的每個(gè)神經(jīng)元 ***/
	for (j = 1; j <= n2; j++) {
		
		/*** 計(jì)算輸入的加權(quán)總和 ***/
		sum = 0.0;
		for (k = 0; k <= n1; k++) {
			sum += conn[k][j] * l1[k];
		}
		l2[j] = squash(sum);
	}
}

/* 輸出誤差 */

void bpnn_output_error(double *delta, double *target, double *output, int nj)
{
	int j;
	double o, t, errsum;
	
	errsum = 0.0;
	for (j = 1; j <= nj; j++) {
		o = output[j];
		t = target[j];
		delta[j] = o * (1.0 - o) * (t - o);
		
	}
	
}

/* 隱含層誤差 */

void bpnn_hidden_error(double* delta_h, int nh, double *delta_o, int no, double **who, double *hidden)
{
	int j, k;
	double h, sum, errsum;
	
	errsum = 0.0;
	for (j = 1; j <= nh; j++) {
		h = hidden[j];
		sum = 0.0;
		for (k = 1; k <= no; k++) {
			sum += delta_o[k] * who[j][k];
		}
		delta_h[j] = h * (1.0 - h) * sum;
		
	}
	
}

/* 調(diào)整權(quán)值 */
void bpnn_adjust_weights(double *delta, int ndelta, double *ly, int nly, double** w, double **oldw, double eta, double momentum)
{
	double new_dw;
	int k, j;
	
	ly[0] = 1.0;
	for (j = 1; j <= ndelta; j++) {
		for (k = 0; k <= nly; k++) {
			new_dw = ((eta * delta[j] * ly[k]) + (momentum * oldw[k][j]));
			w[k][j] += new_dw;
			oldw[k][j] = new_dw;
		}
	}
}
/*******保存權(quán)值**********/
void w_weight(double **w,int n1,int n2,char*name)
{
	int i,j;
	double *buffer;
	FILE *fp;
	fp=fopen(name,"wb+");
	buffer=(double*)malloc((n1+1)*(n2+1)*sizeof(double));
	for(i=0;i<=n1;i++)
	{
		for(j=0;j<=n2;j++)
			buffer[i*(n2+1)+j]=w[i][j];
	}
	fwrite((char*)buffer,sizeof(double),(n1+1)*(n2+1),fp);
	fclose(fp);
	free(buffer);
}



/************讀取權(quán)值*************/
bool  r_weight(double **w,int n1,int n2,char *name)
{
	int i,j;
	double *buffer;
	FILE *fp;
	if((fp=fopen(name,"rb"))==NULL)
	{
		::MessageBox(NULL,"無法讀取權(quán)值信息",NULL,MB_ICONSTOP);
		return (false);
	}
	buffer=(double*)malloc((n1+1)*(n2+1)*sizeof(double));
	fread((char*)buffer,sizeof(double),(n1+1)*(n2+1),fp);
	
	for(i=0;i<=n1;i++)
	{
		for(j=0;j<=n2;j++)
			w[i][j]=buffer[i*(n2+1)+j];
	}
	fclose(fp);
	free(buffer);
	return(true);
}

/*****保存各層結(jié)點(diǎn)的數(shù)目******/
void w_num(int n1,int n2,int n3,char*name)
{
	FILE *fp;
	fp=fopen(name,"wb+");
	int *buffer;
	buffer=(int*)malloc(3*sizeof(int));
	buffer[0]=n1;
	buffer[1]=n2;
	buffer[2]=n3;
	fwrite((char*)buffer,sizeof(int),3,fp);
	fclose(fp);
	free(buffer);
}

/********讀取各層結(jié)點(diǎn)數(shù)目*********/

bool r_num(int *n,char *name)
{
	int *buffer;
	FILE *fp;
	buffer=(int *)malloc(3*sizeof(int));
	if((fp=fopen(name,"rb"))==NULL)
	{
		::MessageBox(NULL,"結(jié)點(diǎn)參數(shù)",NULL,MB_ICONSTOP);
		return (false);
	}
	fread((char*)buffer,sizeof(int),3,fp);
	n[0]=buffer[0];
	n[1]=buffer[1];
	n[2]=buffer[2];
	fclose(fp);
	free(buffer);
	return(true);
}
/********************************************************
* 函數(shù)名稱 VerticalCode()
*
* 參量:
*   BYTE* lpDIBBits   -指向輸入圖像的象素其實(shí)位置的指針 
*   int  num          -圖片中樣本的個(gè)數(shù)
*   LONG lLineByte    -輸入圖片每行的字節(jié)數(shù)
*   LONG lSwidth      -預(yù)處理時(shí)歸一化的寬度
*   LONG lSheight     -預(yù)處理時(shí)歸一化的長(zhǎng)度
*
* 返回值:
*   double**           -特征向量矩陣
*
*  函數(shù)功能 :
*      對(duì)于輸入樣本提取特征向量,在這里把歸一化樣本的
*	   水平和豎直方向的統(tǒng)計(jì)特征作為特征提取出來
***************************************************************/

double** VerticalCode(BYTE* lpDIBBits,int num, LONG lLineByte,LONG lSwidth,LONG lSheight)
{   
   //循環(huán)變量
    int i,j,k;
    BYTE* lpSrc; 
    
	//統(tǒng)計(jì)變量
	int sum;

    //  建立保存特征向量的二維數(shù)組
   double **data;
   
   // 為這個(gè)數(shù)組申請(qǐng)二維存儲(chǔ)空間
   data = alloc_2d_dbl(num,lSwidth+lSheight);
 
   // 將歸一化的樣本的每個(gè)象素作為一個(gè)特征點(diǎn)提取出來

   //逐個(gè)數(shù)據(jù)掃描
   for(k=0;k<num;k++)  
   { 
     //統(tǒng)計(jì)每行的象素點(diǎn)個(gè)數(shù)
      for(i=0;i<lSheight;i++)
	  {    
        //對(duì)統(tǒng)計(jì)變量初始化
	 	  sum=0;

          //對(duì)每個(gè)數(shù)據(jù)逐列掃描
          for(j=k*lSwidth;j<(k+1)*lSwidth;j++)
		  {
            // 指向圖像第i行第j列個(gè)象素的指針
            lpSrc = lpDIBBits + i*lLineByte + j;

             //如果這個(gè)象素是黑色的
             if(*(lpSrc)==0)

             //統(tǒng)計(jì)變量加1
                sum++;
		  }
         data[k][i]=sum;
	  }

    //統(tǒng)計(jì)每列的象素點(diǎn)個(gè)數(shù)
    for(j=k*lSwidth;j<(k+1)*lSwidth;j++)
	{    
        //對(duì)統(tǒng)計(jì)變量初始化
	 	  sum=0;

          //對(duì)每個(gè)數(shù)據(jù)逐行掃描
         for(i=0;i<lSheight;i++)
          {
            // 指向圖像第i行第j列個(gè)象素的指針
            lpSrc = lpDIBBits + i*lLineByte + j;

             //如果這個(gè)象素是黑色的
             if(*(lpSrc)==0)

             //統(tǒng)計(jì)變量加1
                sum++;
		  }
         data[k][j-k*lSwidth+lSheight]=sum;
	  }

   }
 
//返回特征向量矩陣
   return(data);  
}

/*******************************************************************
*
*函數(shù)名稱:
*	TZTQ_13
*參數(shù):
*	HDIB hDIB				-待提取特征的位圖的句柄
*	int num					-字符的數(shù)目
*	int dim					-提取特征的維數(shù)。這里固定為13
*說明:
*	圖像分為8塊,作為8個(gè)特征;象素總數(shù)作為一個(gè)特征;水平切割過去兩條線,得*到兩個(gè)特征;垂直的兩個(gè),總共得到13個(gè)特征
*
*********************************************************************/
double * * TZTQ_13(HDIB hDIB,int num,int dim)
{	
int i,j,k,m;

	//分配一個(gè)內(nèi)存空間并得到二維指針
	double * * tezheng=alloc_2d_dbl(num,dim);

	//鎖定圖像句柄并獲取其指針
	BYTE* lpDIB=(BYTE*)::GlobalLock ((HGLOBAL)hDIB);

	//取得圖像象素?cái)?shù)據(jù)區(qū)的起始地址
	BYTE* lpDIBBits=(BYTE*)::FindDIBBits((char*)lpDIB);
	BYTE* lpSrc;	

	//獲取圖像高度
	LONG lHeight=::DIBHeight ((char*)lpDIB);

	//獲取圖像寬度
	LONG lWidth=::DIBWidth ((char*)lpDIB);

	LONG width=lWidth/num;
	//每行的字節(jié)數(shù)
	LONG lLineBytes = WIDTHBYTES(lWidth * 8);

	int b;

	//存儲(chǔ)臨時(shí)的特征
	double * tz=new double[dim];

	for(k=0;k<num;k++)
	{	
		for(i=0;i<dim;i++) tz[i]=0;

		//提取前8個(gè)特征
		for(m=0;m<8;m++)
		{	for(i=int(m/2)*8;i<(int(m/2)+1)*8;i++)
				for(j=m%2*8+k*width;j<(m%2+1)*8+k*width;j++)
				{	lpSrc=(unsigned char*)lpDIBBits + lLineBytes *  i + j;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产女人18毛片水真多成人如厕| 日韩一级欧美一级| 美女在线视频一区| 国产91精品一区二区麻豆网站| 亚洲伦在线观看| 日韩视频中午一区| 在线影视一区二区三区| 国产福利精品一区| 老鸭窝一区二区久久精品| 亚洲久本草在线中文字幕| 久久免费偷拍视频| 欧美日韩综合不卡| 成人av动漫在线| 美日韩黄色大片| 亚洲va在线va天堂| 亚洲欧美一区二区不卡| 国产视频一区二区在线| 日韩视频中午一区| 欧美男女性生活在线直播观看| 不卡一二三区首页| 国产精品一区二区无线| 久久精品国产免费看久久精品| 一区二区三区波多野结衣在线观看| 亚洲精品一区二区三区蜜桃下载| 欧美日韩大陆一区二区| 欧美三级三级三级爽爽爽| 91麻豆成人久久精品二区三区| 国产黄色精品视频| 国产一区欧美日韩| 狠狠色丁香婷婷综合| 欧美a一区二区| 日本中文字幕不卡| 日韩精品一级中文字幕精品视频免费观看| 亚洲国产精品视频| 亚洲成人自拍网| 亚洲chinese男男1069| 亚洲成人一区在线| 午夜精品久久久久久久| 日韩av在线发布| 免费看欧美女人艹b| 青青青伊人色综合久久| 日韩成人av影视| 美国毛片一区二区三区| 青椒成人免费视频| 午夜影视日本亚洲欧洲精品| 亚洲狼人国产精品| 久久久蜜臀国产一区二区| 欧美一卡在线观看| 欧美精品1区2区3区| 欧美午夜精品一区| 欧美亚州韩日在线看免费版国语版| hitomi一区二区三区精品| 从欧美一区二区三区| 国产高清精品久久久久| 国产精品正在播放| 激情综合网av| 麻豆极品一区二区三区| 91精品欧美综合在线观看最新| 色综合天天视频在线观看| 成人app网站| 99精品国产91久久久久久| 成人av免费观看| av在线播放不卡| 国内精品国产成人国产三级粉色 | 婷婷中文字幕一区三区| 一区二区三区久久| 亚洲在线中文字幕| 亚洲成人第一页| 日韩电影免费一区| 国内精品写真在线观看| 大尺度一区二区| 成人涩涩免费视频| 波多野结衣中文字幕一区二区三区 | 欧美精选午夜久久久乱码6080| 欧美性色综合网| 欧美日本一区二区在线观看| 欧美日韩视频一区二区| 欧美精品v国产精品v日韩精品| 91精品国产高清一区二区三区 | 国产欧美日韩精品一区| 中文一区在线播放| 亚洲欧美激情视频在线观看一区二区三区 | 免费观看一级欧美片| 精品一区二区影视| 高清不卡在线观看av| 色综合av在线| 国产69精品一区二区亚洲孕妇 | 在线观看视频一区二区| 欧美精品亚洲二区| 久久精子c满五个校花| 自拍视频在线观看一区二区| 亚洲一区国产视频| 五月激情综合色| 激情欧美一区二区三区在线观看| 成人教育av在线| 欧美综合视频在线观看| 日韩午夜激情视频| 日韩午夜在线播放| 亚洲精品菠萝久久久久久久| 男女男精品视频| 成人av电影免费在线播放| 欧美日韩国产中文| 欧美韩日一区二区三区| 欧洲中文字幕精品| 精品国产91九色蝌蚪| 一区二区三区产品免费精品久久75| 蜜臀精品一区二区三区在线观看| 国产成人av电影在线观看| 欧美亚洲免费在线一区| 日韩欧美第一区| 亚洲福利电影网| 国产成人免费网站| 91精品国产综合久久久蜜臀图片| 国产欧美久久久精品影院| 午夜精品在线看| 丁香激情综合国产| 91麻豆精品久久久久蜜臀| 国产精品第五页| 久久电影网站中文字幕| 91精品国模一区二区三区| 自拍偷拍国产精品| 国模套图日韩精品一区二区| 欧美日韩在线亚洲一区蜜芽| 国产日韩av一区| 日韩一区欧美二区| 欧洲国内综合视频| 国产欧美日韩在线| 久久精品国产一区二区三区免费看| 国产成人精品一区二区三区四区| 日本道色综合久久| 国产精品丝袜91| 久久丁香综合五月国产三级网站| 欧美自拍偷拍一区| 国产精品天美传媒| 国产高清不卡一区| 精品国内片67194| 日韩va欧美va亚洲va久久| 欧美影院一区二区三区| 久久综合国产精品| 婷婷夜色潮精品综合在线| 一本到不卡精品视频在线观看| 国产肉丝袜一区二区| 韩国在线一区二区| 精品国产99国产精品| 美腿丝袜一区二区三区| 911国产精品| 三级久久三级久久| 91在线播放网址| 亚洲精品免费看| 色婷婷亚洲综合| 一区二区三区四区在线| 99视频热这里只有精品免费| 国产欧美一区二区精品性色| 国产一区二区影院| 欧美大尺度电影在线| 人人超碰91尤物精品国产| 在线播放中文一区| 婷婷综合五月天| 欧美色电影在线| 久久国产精品99久久久久久老狼| 91麻豆精品国产91| 六月丁香综合在线视频| 精品国产一区二区三区久久久蜜月| 日本不卡一区二区三区 | 666欧美在线视频| 亚洲第一av色| 欧美人伦禁忌dvd放荡欲情| 日韩精品国产精品| 日韩一区二区视频在线观看| 亚洲成a天堂v人片| 在线电影欧美成精品| 日本美女视频一区二区| 精品欧美乱码久久久久久| 国产综合久久久久久鬼色| 国产精品网站在线观看| 91麻豆swag| 日韩不卡一二三区| 26uuu色噜噜精品一区二区| 丝瓜av网站精品一区二区| 欧美一区二区私人影院日本| 九色|91porny| 国产精品久久久久久久午夜片 | 欧美日韩精品久久久| 日本午夜精品一区二区三区电影| 26uuu另类欧美| 成人一区二区三区中文字幕| 天天综合天天综合色| 久久久久久久久久电影| 色综合天天综合| 国产精品一区二区三区乱码| 国产人成一区二区三区影院| 91香蕉视频mp4| 免费人成网站在线观看欧美高清| 国产欧美精品一区| 色乱码一区二区三区88| 免费视频最近日韩| 国产精品电影一区二区三区| 777欧美精品| 狠狠狠色丁香婷婷综合激情| 五月婷婷久久综合|