資源簡介
文件里包括基本的和改進后的BP神經網絡算法
代碼片段和文件信息
#include?“iostream.h“
#include?“iomanip.h“
#include?“stdlib.h“
#include?“math.h“
#include?“stdio.h“
#include?“time.h“
#include?“fstream.h“
#define?N?1?//學習樣本個數
#define?IN?3?//輸入層神經元數目
#define?HN?3?//隱層神經元數目
#define?ON?2?//輸出層神經元數目
double?P[IN];?//單個樣本輸入數據
double?T[ON];?//單個樣本教師數據
double?W[HN][IN];?//輸入層至隱層權值
double?V[ON][HN];?//隱層至輸出層權值
double?X[HN];?//隱層的輸入
double?Y[ON];?//輸出層的輸入
double?H[HN];?//隱層的輸出
double?O[ON];?//輸出層的輸出
double?YU_HN[HN];?//隱層的閾值
double?YU_ON[ON];?//輸出層的閾值
double?err_m[N];?//第m個樣本的總誤差
double?a;?//輸出層至隱層的學習效率
double?b;?//隱層至輸入層學習效率
//定義一個放學習樣本的結構
struct?{
double?input[IN];?//輸入在上面定義是一個
double?teach[ON];?//輸出在上面定義也是一個
}Study_Data[N];//學習樣本
?
///////////////////////////
//初始化權、閾值子程序/////
///////////////////////////
initial()
{
//隱層權、閾值初始化//
srand(?(unsigned)time(?NULL?)?);
for(int?i=0;i {
for(int?j=0;j W[i][j]=?(double)((rand()/32767.0)*2-1);?//初始化輸入層到隱層的權值,隨機模擬0?和?1?-1
}
for(int?ii=0;ii {
for(int?jj=0;jj V[ii][jj]=?(double)((rand()/32767.0)*2-1);?//初始化隱層到輸出層的權值,隨機模擬0?和?1?-1
}
for(int?k=0;k {
YU_HN[k]?=?(double)((rand()/32767.0)*2-1);??//隱層閾值初始化?-0.01?~?0.01?之間
}
for(int?kk=0;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 ?P[i]=Study_Data[m].input[i];
//獲得第m個樣本的數據
return?1;
}//子程序input_P(m)結束
/////////////////////////////
////第m個樣本教師信號子程序//
/////////////////////////////
input_T(int?m)
{
for?(int?k=0;k ?T[k]=Study_Data[m].teach[k];
return?1;
}//子程序input_T(m)結束
/////////////////////////////////
//隱層各單元輸入、輸出值子程序///
/////////////////////////////////
H_I_O(){
double?sigma;
int?ij;
for?(j=0;j sigma=0.0;
for?(i=0;i sigma+=W[j][i]*P[i];//求隱層內積
X[j]=sigma?-?YU_HN[i];//求隱層凈輸入,為什么減隱層的閥值
H[j]=1.0/(1.0+exp(-X[j]));//求隱層輸出?siglon算法
}
return?1;
}//子程序H_I_O()結束
///////////////////////////////////
//輸出層各單元輸入、輸出值子程序///
///////////////////////////////////
O_I_O()
{
double?sigma;
for?(int?k=0;k ?sigma=0.0;
?for?(int?j=0;j ?sigma+=V[k][j]*H[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 ??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)結束
////////////////////////////////////
//隱層至輸入層的一般化誤差子程序////
//////////////////////
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????????33??2004-08-02?02:33??BP算法\基本bp算法\bp.txt
?????文件???????7283??2007-11-08?21:30??BP算法\基本bp算法\MyBP.cpp
?????文件???????3377??2007-11-08?20:46??BP算法\基本bp算法\MyBP.dsp
?????文件????????516??2007-11-08?21:03??BP算法\基本bp算法\MyBP.dsw
?????文件??????50176??2007-11-08?21:03??BP算法\基本bp算法\MyBP.ncb
?????文件??????48640??2007-11-08?21:03??BP算法\基本bp算法\MyBP.opt
?????文件???????1129??2007-11-08?20:47??BP算法\基本bp算法\MyBP.plg
?????文件????????172??2007-11-08?20:47??BP算法\基本bp算法\權值.txt
?????文件?????????25??2003-09-22?17:29??BP算法\基本bp算法\訓練樣本.txt
?????文件????????573??2003-09-15?08:12??BP算法\基本bp算法\訓練樣本為什么不行啊.txt
?????文件?????????79??2007-11-08?20:47??BP算法\基本bp算法\閾值.txt
?????文件?????????33??2004-08-02?02:33??BP算法\改進型bp算法\bp.txt
?????文件???????8017??2003-09-22?17:45??BP算法\改進型bp算法\MyBP.cpp
?????文件???????4260??2004-08-01?13:50??BP算法\改進型bp算法\MyBP.dsp
?????文件????????533??2004-08-01?13:20??BP算法\改進型bp算法\MyBP.dsw
?????文件??????50176??2003-09-22?17:46??BP算法\改進型bp算法\MyBP.ncb
?????文件??????49664??2003-09-22?17:46??BP算法\改進型bp算法\MyBP.opt
?????文件????????875??2003-09-22?17:46??BP算法\改進型bp算法\MyBP.plg
?????文件??????48640??2003-09-17?10:27??BP算法\改進型bp算法\復件?MyBP.opt
?????文件????????170??2003-09-22?17:45??BP算法\改進型bp算法\權值.txt
?????文件?????????25??2003-09-22?09:36??BP算法\改進型bp算法\訓練樣本.txt
?????文件????????573??2003-09-15?08:12??BP算法\改進型bp算法\這個訓練樣本怎么算不出來呢,至今搞不明白.txt
?????文件?????????80??2003-09-22?17:45??BP算法\改進型bp算法\閾值.txt
?????文件???????1227??2005-08-23?10:10??BP算法\說明.txt
?????文件??????26624??2003-09-22?17:44??BP算法\說明文件.doc
?????目錄??????????0??2007-11-08?21:03??BP算法\基本bp算法\Debug
????..AD...?????????0??2007-11-08?21:30??BP算法\基本bp算法
????..AD...?????????0??2003-09-22?17:22??BP算法\改進型bp算法
?????目錄??????????0??2009-07-24?22:55??BP算法
-----------?---------??----------?-----??----
............此處省略2個文件信息
評論
共有 條評論