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

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

?? bp.cpp

?? 用vc++編寫的bp神經網絡源程序,希望喜歡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 && study<10000);           //  (6)cout<<"網絡已經學習了"<<study<<"次,學習的均方誤差為"<<sum_err<<endl;savequan();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩免费观看一区三区| 国产精品视频看| 欧美激情一区不卡| 亚洲一区成人在线| 国产成人综合亚洲网站| 欧美在线播放高清精品| 久久久久亚洲综合| 日本一道高清亚洲日美韩| 91性感美女视频| 国产日韩欧美精品电影三级在线| 午夜久久久久久久久| 色一情一伦一子一伦一区| 国产偷国产偷精品高清尤物| 美洲天堂一区二卡三卡四卡视频| 日本国产一区二区| 亚洲色图在线播放| 成人av集中营| 国产日韩视频一区二区三区| 精品制服美女久久| 日韩欧美在线网站| 日本系列欧美系列| 欧美一区二区成人6969| 日韩在线一区二区| 91精品国产一区二区三区蜜臀| 亚洲香肠在线观看| 在线精品观看国产| 亚洲精品视频自拍| 一本到高清视频免费精品| 中文字幕一区二区三区精华液| 国产成人综合在线| 国产精品美女久久久久久2018 | www.在线成人| 国产女人18水真多18精品一级做| 国产在线乱码一区二区三区| 亚洲精品一区二区三区精华液 | 手机精品视频在线观看| 91黄色激情网站| 亚洲大型综合色站| 欧美精品日韩一本| 麻豆高清免费国产一区| 精品欧美一区二区三区精品久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美一级黄色录像| 国产揄拍国内精品对白| 久久精品视频网| 国产成人免费视频一区| 亚洲日本成人在线观看| 欧美专区亚洲专区| 日韩电影在线一区| 精品成a人在线观看| 国产精品一级片在线观看| 国产精品看片你懂得| 色一情一伦一子一伦一区| 丝袜美腿亚洲色图| 久久久久久亚洲综合| 99精品偷自拍| 天天做天天摸天天爽国产一区| 欧美xxxxx牲另类人与| 成人手机电影网| 亚洲国产日韩在线一区模特| 日韩免费视频一区二区| 成人精品一区二区三区四区| 性做久久久久久| 欧美大胆一级视频| 成人av手机在线观看| 亚洲国产精品久久一线不卡| 26uuu国产电影一区二区| 91视频免费看| 久久精品噜噜噜成人av农村| 成人欧美一区二区三区视频网页| 884aa四虎影成人精品一区| 国产精品一区二区无线| 亚洲妇女屁股眼交7| 国产校园另类小说区| 717成人午夜免费福利电影| 丁香亚洲综合激情啪啪综合| 天堂成人国产精品一区| 中文字幕日本乱码精品影院| 日韩亚洲欧美在线| 日本高清成人免费播放| 国产盗摄一区二区| 毛片av一区二区三区| 亚洲免费av观看| 国产日产欧美一区| 日韩一级大片在线观看| 欧美三级视频在线播放| 91看片淫黄大片一级在线观看| 蜜臀av一区二区在线观看| 亚洲一区二区三区四区在线观看 | 欧美一区二区三区啪啪| 色噜噜狠狠色综合欧洲selulu| 国产毛片精品视频| 日本在线播放一区二区三区| 亚洲视频一区在线观看| 日本一区二区免费在线观看视频| 欧美大胆人体bbbb| 欧美一区二区国产| 欧美精品九九99久久| 91黄色免费观看| 91色婷婷久久久久合中文| 国产99久久久国产精品免费看| 美脚の诱脚舐め脚责91| 人禽交欧美网站| 亚洲.国产.中文慕字在线| 一区二区三区在线不卡| 一区二区三区在线观看国产| 亚洲人成网站精品片在线观看| 中文一区二区完整视频在线观看| 久久嫩草精品久久久精品| 日韩精品一区二区三区视频播放 | 精品一区二区综合| 美日韩一级片在线观看| 日本特黄久久久高潮| 亚洲成av人片在www色猫咪| 一区二区三区中文字幕| 一区二区三区四区中文字幕| 亚洲免费毛片网站| 亚洲欧美国产毛片在线| 亚洲精品一二三四区| 一区二区三区日韩| 舔着乳尖日韩一区| 蜜桃精品在线观看| 激情小说欧美图片| 国产精品99久久久久久有的能看| 国产精品77777| 99精品视频在线观看| 在线观看日产精品| 制服丝袜av成人在线看| 91精品国产aⅴ一区二区| 欧美一级日韩一级| 久久一区二区视频| 中文字幕在线不卡| 亚洲综合无码一区二区| 琪琪久久久久日韩精品| 国产精品自在在线| 色偷偷一区二区三区| 欧美日韩一二区| 精品乱人伦小说| 欧美国产成人精品| 亚洲国产日韩综合久久精品| 久久精品国产色蜜蜜麻豆| 国产黑丝在线一区二区三区| av中文字幕亚洲| 欧美日韩精品综合在线| 久久男人中文字幕资源站| 亚洲日本韩国一区| 男人的天堂久久精品| 成人午夜电影久久影院| 欧美日韩电影在线| 久久精品视频网| 亚洲综合无码一区二区| 国产乱码精品一品二品| 欧洲av在线精品| 国产三级精品三级在线专区| 亚洲成人av中文| 国产盗摄一区二区| 在线不卡的av| 亚洲少妇30p| 韩国在线一区二区| 色噜噜久久综合| 欧美精品一区二区三区蜜桃视频 | 久久激情五月婷婷| 波多野结衣一区二区三区| 日韩欧美一区二区三区在线| 中文字幕一区二区三区色视频 | 久久久综合视频| 亚洲一区二区不卡免费| 成人晚上爱看视频| 久久综合九色综合97婷婷| 亚洲成人动漫在线免费观看| 成人一级视频在线观看| 日韩欧美国产三级| 亚洲一级电影视频| 成人激情小说网站| 久久久av毛片精品| 日韩不卡免费视频| 欧美日韩国产一级二级| 一区二区三区视频在线观看| 成人污污视频在线观看| 久久午夜电影网| 美女一区二区久久| 4hu四虎永久在线影院成人| 亚洲综合成人在线视频| 91色在线porny| 日韩美女视频一区二区| 9色porny自拍视频一区二区| 久久久久久久久久看片| 九九**精品视频免费播放| 日韩一区和二区| 欧美96一区二区免费视频| 在线电影国产精品| 日本不卡123| 日韩欧美你懂的| 毛片一区二区三区| 精品欧美一区二区在线观看| 免费日本视频一区| 日韩精品在线一区| 精品一区二区三区免费观看| 精品精品国产高清一毛片一天堂| 久久狠狠亚洲综合|