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

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

?? bp.cpp

?? bp神經網絡算法具體實踐
?? CPP
字號:
#include "iostream.h"#include "iomanip.h"#include "stdlib.h"#include "math.h"#include "stdio.h"#include "time.h"#include "fstream.h"#define N 11 //學習樣本個數#define IN 5 //輸入層神經元數目#define HN 8 //隱層神經元數目#define HC 3 //隱層層數#define ON 3 //輸出層神經元數目#define Z 200000 //舊權值保存-》每次study的權值都保存下來double P[IN]; //單個樣本輸入數據double T[ON]; //單個樣本教師數據double U11[HN][IN]; //輸入層至第一隱層權值double U12[HN][HN]; //第一隱層至第二隱層權值double U23[HN][HN]; //第二隱層至第三隱層權值double V[ON][HN]; //第三隱層至輸出層權值double X1[HN]; //第一隱層的輸入double X2[HN]; //第二隱層的輸入double X3[HN]; //第三隱層的輸入double Y[ON]; //輸出層的輸入double H1[HN]; //第一隱層的輸出double H2[HN]; //第二隱層的輸出double H3[HN]; //第三隱層的輸出double O[ON]; //輸出層的輸出double YU_HN1[HN]; //第一隱層的閾值double YU_HN2[HN]; //第二隱層的閾值double YU_HN3[HN]; //第三隱層的閾值double YU_ON[ON]; //輸出層的閾值double err_m[N]; //第m個樣本的總誤差double a; //學習效率double alpha;  //動量因子//定義一個放學習樣本的結構struct {double input[IN]; //輸入在上面定義是五個	double teach[ON]; //輸出在上面定義是三個}Study_Data[N];//學習樣本//bp算法用來保存每次計算的權值struct {double old_U11[HN][IN];  //保存輸入層至隱層權值舊權double old_U12[HN][HN]; //保存第一隱層至第二隱層權值double old_U23[HN][HN]; //保存第二隱層至第三隱層權值double old_V[ON][HN];  //保存第三隱層至輸出層舊權}Old_WV[Z]; saveWV(int m){	for(int i=0;i<HN;i++)	{		for(int j=0;j<IN;j++)		{			Old_WV[m].old_U11[i][j] = U11[i][j];		}	}	for(int i1=0;i1<HN;i1++)	{		for(int j1=0;j1<HN;j1++)		{			Old_WV[m].old_U12[i1][j1] = U12[i1][j1];		}	}	for(int i2=0;i2<HN;i2++)	{		for(int j2=0;j2<HN;j2++)		{			Old_WV[m].old_U23[i2][j2] = U23[i2][j2];		}	}	for(int i3=0;i3<ON;i3++)	{		for(int j3=0;j3<HN;j3++)		{			Old_WV[m].old_V[i3][j3] = V[i3][j3];		}	}	return 1;}/////////////////////////////初始化權、閾值子程序////////////////////////////////initial(){//隱層權、閾值初始化//	srand( (unsigned)time( NULL ) );	for(int i=0;i<HN;i++)	{		for(int j=0;j<IN;j++)			U11[i][j]= (double)((rand()/32767.0)*2-1); //初始化輸入層到第一隱層的權值,隨機模擬0 和 1 -1		}	for(int i1=0;i1<HN;i1++)	{		for(int j1=0;j1<HN;j1++)			U12[i1][j1]= (double)((rand()/32767.0)*2-1); //初始化第一隱層到第二隱層權值,隨機模擬0 和 1 -1		}	for(int i2=0;i2<HN;i2++)	{		for(int j2=0;j2<HN;j2++)			U23[i2][j2]= (double)((rand()/32767.0)*2-1); //初始化第二隱層到第三隱層權值,隨機模擬0 和 1 -1		}	for(int i3=0;i3<ON;i3++)	{		for(int j3=0;j3<HN;j3++)			V[i3][j3]= (double)((rand()/32767.0)*2-1); //初始化隱層到輸出層的權值,隨機模擬0 和 1 -1	}	for(int k=0;k<HN;k++)	{		YU_HN1[k] = (double)((rand()/32767.0)*2-1);  //第一隱層閾值初始化 ,-0.01 ~ 0.01 之間	}	for(int k1=0;k1<HN;k1++)	{		YU_HN2[k] = (double)((rand()/32767.0)*2-1);  //第二隱層閾值初始化 ,-0.01 ~ 0.01 之間	}    for(int k2=0;k2<HN;k2++)	{		YU_HN3[k] = (double)((rand()/32767.0)*2-1);  //第三隱層閾值初始化 ,-0.01 ~ 0.01 之間	}	for(int kk=0;kk<ON;kk++)	{		YU_ON[kk] = (double)((rand()/32767.0)*2-1); //輸出層閾值初始化 ,-0.01 ~ 0.01 之間	}  return 1;}//子程序initial()結束////////////////////////////////////第m個學習樣本輸入子程序//////////////////////////////////input_P(int m){for (int i=0;i<IN;i++) P[i]=Study_Data[m].input[i];//獲得第m個樣本的數據return 1;}//子程序input_P(m)結束/////////////////////////////////第m個樣本教師信號子程序///////////////////////////////input_T(int m){for (int k=0;k<ON;k++) T[k]=Study_Data[m].teach[k];return 1;}//子程序input_T(m)結束///////////////////////////////////隱層各單元輸入、輸出值子程序////////////////////////////////////H_I_O(){double sigma1,sigma2,sigma3;int i,i1,i2,j,j1,j2;for (j=0;j<HN;j++){sigma1=0.0;	for (i=0;i<IN;i++)		sigma1+=U11[j][i]*P[i];//求第一隱層內積		X1[j]=sigma1 - YU_HN1[j];//求第一隱層凈輸入H1[j]=1.0/(1.0+exp(-X1[j]));//求第一隱層輸出sigmoid算法}for (j1=0;j1<HN;j1++){sigma2=0.0;	for (i1=0;i1<HN;i1++)		sigma2+=U12[j1][i1]*H1[i];//求第二隱層內積		X2[j]=sigma2 - YU_HN2[j];//求第二隱層凈輸入H2[j]=1.0/(1.0+exp(-X2[j]));//求第二隱層輸出sigmoid算法}for (j2=0;j2<HN;j2++){sigma3=0.0;	for (i2=0;i2<HN;i2++)		sigma3+=U23[j2][i2]*H2[i];//求第三隱層內積		X3[j]=sigma3 - YU_HN3[j];//求第三隱層凈輸入H3[j]=1.0/(1.0+exp(-X3[j]));//求第三隱層輸出sigmoid算法}return 1;}//子程序H_I_O()結束/////////////////////////////////////輸出層各單元輸入、輸出值子程序//////////////////////////////////////O_I_O(){double sigma;for (int k=0;k<ON;k++){ sigma=0.0; for (int j=0;j<HN;j++) { sigma+=V[k][j]*H3[k];//求輸出層內積 }Y[k]=sigma-YU_ON[k]; //求輸出層凈輸入O[k]=1.0/(1.0+exp(-Y[k]));//求輸出層輸出}return 1;}//子程序O_I_O()結束//////////////////////////////////////輸出層至隱層的一般化誤差子程序////////////////////////////////////////double d_err[ON];Err_O_H(int m){double abs_err[ON];//每個樣本的絕對誤差都是從0開始的double sqr_err=0;//每個樣本的平方誤差計算都是從0開始的for (int k=0;k<ON;k++){  abs_err[k]=T[k]-O[k];//求第m個樣本下的第k個神經元的絕對誤差sqr_err+=(abs_err[k])*(abs_err[k]);//求第m個樣本下輸出層的平方誤差d_err[k]=abs_err[k]*O[k]*(1.0-O[k]);//d_err[k]輸出層各神經元的一般化誤差}err_m[m]=sqr_err/2;//第m個樣本下輸出層的平方誤差/2=第m個樣本的均方誤差return 1;}//子程序Err_O_H(m)結束//////////////////////////////////////隱層至輸入層的一般化誤差子程序////////////////////////////////////////double e_err3[HN];//定義第三隱層各神經元的一般化誤差double e_err2[HN];//定義第二隱層各神經元的一般化誤差double e_err1[HN];//定義第一隱層各神經元的一般化誤差Err_H_I(){double sigma3,sigma2,sigma1;for (int j3=0;j3<HN;j3++) {  sigma3=0.0;  for (int k3=0;k3<ON;k3++)   {      sigma3=d_err[k3]*V[k3][j3];  }  e_err3[j3]=sigma3*H3[j3]*(1-H3[j3]);//第三隱層各神經元的一般化誤差}for (int j2=0;j2<HN;j2++) {  sigma2=0.0;  for (int k2=0;k2<HN;k2++)   {      sigma2=d_err[k2]*V[k2][j2];  }  e_err2[j2]=sigma2*H2[j2]*(1-H2[j2]);//第二隱層各神經元的一般化誤差}for (int j1=0;j1<HN;j1++) {  sigma1=0.0;  for (int k1=0;k1<HN;k1++)   {      sigma1=d_err[k1]*V[k1][j1];  }  e_err1[j1]=sigma1*H1[j1]*(1-H1[j1]);//第一隱層各神經元的一般化誤差}return 1;}//子程序Err_H_I()結束//////////////////////////////////////////////////////////輸出層至第三隱層的權值調整、輸出層閾值調整計算子程序//////////////////////////////////////////////////////////////Delta_O_H3(int m,int n){if(n<=1){	for (int k=0;k<ON;k++)	{		for (int j=0;j<HN;j++)		{			V[k][j]=V[k][j]-a*d_err[k]*H3[j];//輸出層至第三隱層的權值調整		}	    YU_ON[k]-=a*d_err[k];//輸出層閾值調整	}}else if(n>1){	for (int k=0;k<ON;k++)	{		for (int j=0;j<HN;j++)		{			V[k][j]=V[k][j]+a*d_err[k]*H3[j]+alpha*(V[k][j]-Old_WV[(n-1)].old_V[k][j]);//輸出層至隱層的權值調整		}	    YU_ON[k]-=a*d_err[k];//輸出層至隱層的閾值調整	}}return 1;}//子程序Delta_O_H3()結束/////////////////////////////////////////////////////////////////第三隱層至第二隱層的權值調整、第三隱層閾值調整計算子程序////////////////////////////////////////////////////////////////////Delta_H3_H2(int m,int n){if(n<=1){	for (int k=0;k<HN;k++)	{		for (int j=0;j<HN;j++)		{			U23[k][j]=U23[k][j]-a*e_err3[k]*H2[j];//第二隱層至第三隱層層的權值調整		}	    YU_HN3[k]-=a*e_err3[k];//第三隱層閾值調整	}}		else if(n>1){	for (int k=0;k<HN;k++)	{		for (int j=0;j<HN;j++)		{		   U23[k][j]=U23[k][j]+a*e_err3[k]*H2[j]+alpha*(U23[k][j]-Old_WV[(n-1)].old_U23[k][j]);//第二隱層至第三隱層層的權值調整		}	    YU_HN3[k]-=a*e_err3[k];//第三隱層閾值調整	}}return 1;}//子程序Delta_H3_H2()結束/////////////////////////////////////////////////////////////////第二隱層至第一隱層的權值調整、第二隱層閾值調整計算子程序////////////////////////////////////////////////////////////////////Delta_H2_H1(int m,int n){if(n<=1){	for (int k=0;k<HN;k++)	{		for (int j=0;j<HN;j++)		{			U12[k][j]=U12[k][j]-a*e_err2[k]*H1[j];//第一隱層至第二隱層層的權值調整		}	    YU_HN2[k]-=a*e_err2[k];//第二隱層閾值調整	}}		else if(n>1){	for (int k=0;k<HN;k++)	{		for (int j=0;j<HN;j++)		{		   U12[k][j]=U12[k][j]+a*e_err2[k]*H1[j]+alpha*(U12[k][j]-Old_WV[(n-1)].old_U12[k][j]);//第一隱層至第二隱層層的權值調整		}	    YU_HN2[k]-=a*e_err2[k];//第二隱層閾值調整	}}return 1;}//子程序Delta_H2_H1()結束///////////////////////////////////////////////////////////////第一隱層至輸入層的權值調整、第一隱層閾值調整計算子程序//////////////////////////////////////////////////////////////////Delta_H1_I(int m,int n){if(n<=1){	for (int j=0;j<HN;j++)	{		for (int i=0;i<IN;i++) 		{			U11[j][i]=U11[j][i]+a*e_err1[j]*P[i];//第一隱層至輸入層的權值調整		}	YU_HN1[j]+=a*e_err1[j];//第一隱層閾值調整	}}else if(n>1){	for (int j=0;j<HN;j++)	{		for (int i=0;i<IN;i++) 		{			U11[j][i]=U11[j][i]+a*e_err1[j]*P[i]+alpha*(U11[j][i]-Old_WV[(n-1)].old_U11[j][i]);//第一隱層至輸入層的權值調整		}	YU_HN1[j]+=a*e_err1[j];//第一隱層閾值調整	}}return 1;}//子程序Delta_H1_I()結束///////////////////////////////////N個樣本的全局誤差計算子程序/////////////////////////////////////double Err_Sum(){double total_err=0;for (int m=0;m<N;m++) {  total_err+=err_m[m];//每個樣本的均方誤差加起來就成了全局誤差}return total_err;}//子程序Err_sum()結束GetTrainingData(){	ifstream GetTrainingData ( "訓練樣本.txt", ios::in );	for(int m=0;m<N;m++)	{		for(int i=0;i<IN;i++)		{			GetTrainingData>>Study_Data[m].input[i];  //取得輸入數據		}		for(int j=0;j<ON;j++)		{			GetTrainingData>>Study_Data[m].teach[j];  //取得輸出數據		}	}	GetTrainingData.close();	return 1;}void savequan(){	ofstream outQuanFile( "權值.txt", ios::out );	ofstream outYuFile( "閾值.txt", ios::out );	outQuanFile<<"A\n";	for(int i=0;i<HN;i++)	{		for(int j=0;j<IN;j++)		{			outQuanFile<<U11[i][j]<<"   "; 		}		outQuanFile<<"\n";	}//取得輸入層至第一隱層權值	outQuanFile<<"B\n";	for(int i1=0;i1<HN;i1++)	{		for(int j1=0;j1<HN;j1++)		{			outQuanFile<<U12[i1][j1]<<"   ";		}		outQuanFile<<"\n";	}//取得第一隱層至第二隱層權值	outQuanFile<<"C\n";	for(int i2=0;i2<HN;i2++)	{		for(int j2=0;j2<HN;j2++)		{			outQuanFile<<U23[i2][j2]<<"   ";		}		outQuanFile<<"\n";	}//取得第二隱層至第三隱層權值	outQuanFile<<"D\n";	for(int i3=0;i3<ON;i3++)	{		for(int j3=0;j3<HN;j3++)		{			outQuanFile<<V[i3][j3]<<"   ";		}		outQuanFile<<"\n";	}//取得第三隱層至輸出層權值	outYuFile<<"\n第一隱層的閾值為:\n";	for(int k1=0;k1<HN;k1++)	{		outYuFile<<YU_HN1[k1]<<"  ";  //隱層閾值寫入文本	}	outYuFile<<"\n第二隱層的閾值為:\n";	for(int k2=0;k2<HN;k2++)	{		outYuFile<<YU_HN2[k2]<<"  ";  //隱層閾值寫入文本	}	outYuFile<<"\n第三隱層的閾值為:\n";	for(int k3=0;k3<HN;k3++)	{		outYuFile<<YU_HN3[k3]<<"  ";  //隱層閾值寫入文本	}	outYuFile<<"輸出層的閾值為:\n";	for(int k=0;k<ON;k++)	{		outYuFile<<YU_ON[k]<<"  ";  //輸出層閾值寫入文本	}	outQuanFile.close();}/**********************//**程序入口,即主程序**//**********************/void main(){double sum_err;int study;//訓練次數double a = 0.6;//學習速率,即步長double alpha = 0.8;  //動量因子study=0; //學習次數double Pre_error ; //預定誤差Pre_error = 0.0001;int Pre_times;Pre_times = 200;GetTrainingData();//輸入樣本 (1)initial(); //隱層、輸出層權、閾值初始化  (2)do{++study; for (int m=0;m<N;m++) {input_P(m); //輸入第m個學習樣本 input_T(m);//輸入第m個樣本的教師信號 H_I_O(); //第m個學習樣本隱層各神經元輸入、輸出值 O_I_O(); //第m個學習樣本輸出層各神經元輸入、輸出值 (3)Err_O_H(m); //第m個學習樣本輸出層至隱層一般化誤差  Err_H_I(); //第m個學習樣本隱層至輸入層一般化誤差 (4)Delta_O_H3(m,study); //第m個學習樣本輸出層至第三隱層權值、閾值調整、修改Delta_H3_H2(m,study); //第m個學習樣本第三隱層至第二隱層的權值、閾值調整、修改Delta_H2_H1(m,study); //第m個學習樣本第二隱層至第一隱層的權值、閾值調整、修改Delta_H1_I(m,study); //第m個學習樣本第一隱層至輸入層的權值、閾值調整、修改  (5)  } //全部樣本訓練完畢sum_err=Err_Sum(); //全部樣本全局誤差計算  saveWV(study);  //把本次的學習權值全保存到數組cout<<"第"<<study<<"次學習的均方誤差為"<<sum_err<<endl;}while (sum_err > Pre_error);           //  (6)cout<<"網絡已經學習了"<<study<<"次,學習的均方誤差為"<<sum_err<<endl;savequan();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精久久久久久久久久久| 欧美久久一二三四区| 欧美国产一区视频在线观看| 日韩欧美在线1卡| 日韩一区二区视频在线观看| 国产三区在线成人av| 亚洲永久精品国产| 在线观看日韩国产| 亚洲欧美日韩小说| 91丨国产丨九色丨pron| 亚洲视频 欧洲视频| 成人ar影院免费观看视频| 国产性天天综合网| 床上的激情91.| 国产精品嫩草影院com| 不卡的电影网站| 亚洲日本在线天堂| 欧美午夜在线观看| 日韩**一区毛片| 精品国产在天天线2019| 国产一区二区在线电影| 欧美一级欧美三级在线观看| 狠狠色综合日日| 国产欧美一区二区精品秋霞影院| 手机精品视频在线观看| 欧美一区二区三区四区在线观看| 久久精品国产澳门| 91精品国产福利| 国产一区二区三区国产| 国产精品视频免费看| 不卡一区二区中文字幕| 亚洲国产视频一区二区| 一级精品视频在线观看宜春院| 亚洲黄色尤物视频| 婷婷一区二区三区| 91精品国产色综合久久久蜜香臀| 免费人成黄页网站在线一区二区| 欧美美女一区二区| 欧美一区二区三区爱爱| 久久综合久久久久88| 精品亚洲成a人| 日韩精品一区二区三区在线| 久久亚洲精华国产精华液| 亚洲综合无码一区二区| 久久国产尿小便嘘嘘| 欧美性色综合网| 欧美一级视频精品观看| 最好看的中文字幕久久| 成人午夜视频在线观看| 亚洲精品在线免费观看视频| 亚洲一区二区三区激情| 欧美日韩一区三区| 国产伦精一区二区三区| 亚洲h在线观看| 欧美性猛片xxxx免费看久爱| 天堂成人国产精品一区| 色猫猫国产区一区二在线视频| 一区二区三区在线视频播放| 在线观看国产91| 亚洲超碰97人人做人人爱| 色成年激情久久综合| 日韩一级大片在线观看| 首页国产丝袜综合| 日本丶国产丶欧美色综合| 国产精品色哟哟网站| 蜜桃久久av一区| 日韩色在线观看| 日本视频免费一区| 欧美一级午夜免费电影| 极品销魂美女一区二区三区| 91福利社在线观看| 亚洲午夜精品在线| 风间由美中文字幕在线看视频国产欧美| 91精品国产福利| 日韩精品一区二区三区视频播放 | 亚洲成人激情社区| 欧美日韩一区二区三区四区五区| 亚洲成人免费影院| 综合久久国产九一剧情麻豆| 丰满亚洲少妇av| 欧美日韩国产综合一区二区三区| 99在线精品视频| 成人一区二区三区| 在线播放91灌醉迷j高跟美女 | 91精品国产综合久久精品麻豆| 日本精品一区二区三区高清 | 亚洲国产精品自拍| 亚洲成国产人片在线观看| 亚洲第一主播视频| 免费成人美女在线观看.| 日本成人中文字幕在线视频| 久久99精品视频| 国产91精品一区二区麻豆网站| 成人高清免费在线播放| 色综合天天综合网国产成人综合天 | 日韩精品久久久久久| 免费精品视频最新在线| 国产精品88888| 色综合久久综合中文综合网| 日本精品视频一区二区| 欧美色图免费看| 欧美一区二区三区成人| 久久久噜噜噜久久中文字幕色伊伊| 亚洲国产精品成人综合 | 日韩电影在线观看网站| 国产一本一道久久香蕉| 日本乱人伦aⅴ精品| 欧美一区二区黄| 国产精品蜜臀在线观看| 性做久久久久久免费观看欧美| 久久99久国产精品黄毛片色诱| 成人免费三级在线| 欧美精品久久99久久在免费线| 日韩精品一区国产麻豆| 亚洲素人一区二区| 免费成人小视频| 91在线免费视频观看| 欧美一区午夜精品| 亚洲欧美日韩国产一区二区三区| 蜜桃久久久久久| 91久久精品网| xnxx国产精品| 亚洲第一在线综合网站| 成人综合在线观看| 欧美日韩免费高清一区色橹橹| 久久一区二区视频| 午夜精品国产更新| 成人av在线一区二区三区| 欧美高清hd18日本| 国产精品福利在线播放| 美女一区二区三区在线观看| 91亚洲男人天堂| 久久精品亚洲国产奇米99| 天堂av在线一区| 色欧美片视频在线观看 | 亚洲视频免费看| 国产精品伊人色| 51久久夜色精品国产麻豆| 亚洲色图制服丝袜| 国产精品综合久久| 日韩视频免费观看高清完整版在线观看 | 精品国免费一区二区三区| 亚洲自拍偷拍欧美| 99久久久国产精品免费蜜臀| 2023国产精品| 在线中文字幕一区二区| 国产精品乱码一区二区三区软件 | 国产成人在线网站| 精品国产三级a在线观看| 五月天国产精品| 在线观看欧美精品| 亚洲四区在线观看| proumb性欧美在线观看| 国产天堂亚洲国产碰碰| 国内一区二区在线| 日韩欧美123| 青青国产91久久久久久| 在线综合+亚洲+欧美中文字幕| 亚洲r级在线视频| 欧洲一区二区三区免费视频| 亚洲精品菠萝久久久久久久| a在线欧美一区| 《视频一区视频二区| 成人免费黄色在线| 中文字幕精品在线不卡| 成人蜜臀av电影| 国产精品婷婷午夜在线观看| 国产盗摄视频一区二区三区| 久久久噜噜噜久久中文字幕色伊伊 | 成人污污视频在线观看| 国产精品萝li| 色婷婷亚洲一区二区三区| 亚洲老妇xxxxxx| 欧美日韩国产一二三| 日韩福利视频网| 精品少妇一区二区三区免费观看 | 日韩欧美一区二区视频| 久久国产精品色婷婷| 久久伊99综合婷婷久久伊| 国产成人精品免费网站| 国产精品久99| 欧美午夜精品一区二区三区| 亚洲第一久久影院| 精品日韩一区二区三区| 国产91精品在线观看| 亚洲欧美另类久久久精品 | 精品国产免费久久| 成人黄色a**站在线观看| 亚洲婷婷综合色高清在线| 欧美日韩国产区一| 精品亚洲porn| 日韩美女精品在线| 欧美一区二区三区色| 国产99久久久精品| 亚洲国产裸拍裸体视频在线观看乱了 | 日韩精品一区在线| 成人久久18免费网站麻豆 | 一区二区三区欧美日韩| 日韩一二在线观看| 99久久综合色|