BP算法的实现文档格式.docx

上传人:b****3 文档编号:13693300 上传时间:2022-10-12 格式:DOCX 页数:11 大小:17.87KB
下载 相关 举报
BP算法的实现文档格式.docx_第1页
第1页 / 共11页
BP算法的实现文档格式.docx_第2页
第2页 / 共11页
BP算法的实现文档格式.docx_第3页
第3页 / 共11页
BP算法的实现文档格式.docx_第4页
第4页 / 共11页
BP算法的实现文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

BP算法的实现文档格式.docx

《BP算法的实现文档格式.docx》由会员分享,可在线阅读,更多相关《BP算法的实现文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

BP算法的实现文档格式.docx

time.h"

#defineN8/*学习样本个数(测试样本个数)*/

#defineIN3/*输入层神经元数目*/

#defineHN2/*隐层神经元数目*/

#defineON1/*输出层神经元数目*/

floatP[IN];

/*单个样本输入数据*/

floatT[ON];

/*单个样本教师数据*/

floatW[HN][IN];

/*输入层至隐层权值*/

floatV[ON][HN];

/*隐层至输出层权值*/

floatX[HN];

/*隐层的输入*/

floatY[ON];

/*输出层的输入*/

floatH[HN];

/*隐层的输出*/

floatO[ON];

/*输出层的输出*/

floatYU_HN[HN];

/*隐层的阈值*/

floatYU_ON[ON];

/*输出层的阈值*/

floaterr_m[N];

/*第m个样本的总误差*/

floata;

/*输出层至隐层学习效率*/

floatb;

/*隐层至输入层学习效率*/

floatalpha;

 

/*/动量因子,改进型bp算法使用*/

floatd_err[ON];

/*δk*/

floate_err[HN];

/*δj*/

FILE*fp;

/*定义一个放学习样本的结构*/

struct{

floatinput[IN];

floatteach[ON];

}Study_Data[N];

/*定义一个放测试样本的结构*/

floatexpect[ON];

}Test_Data[N];

/*改进型bp算法用来保存每次计算的权值*/

floatold_W[HN][IN];

floatold_V[ON][HN];

intStart_Show()

{

clrscr();

printf("

\n 

***********************\n"

);

Welcometouse 

*\n"

thisprogramof 

calculatingtheBP*\n"

model!

Happyeveryday!

***********************\n"

\n\nBeforestarting,pleasereadthefollowscarefully:

\n\n"

TheprogramofBPcanstudyitselffornomorethan200000times.\nAndsurpassingthenumber,theprogramwillbeendedbyitselfin\npreventingrunninginfinitelybecauseoferror!

\n"

\n\n\n"

Nowpressanykeytostart...\n"

getch();

}

intEnd_Show()

\n\n---------------------------------------------------\n"

Theprogramhasreachedtheendsuccessfully!

\n\nPressanykeytoexit!

Thisistheend 

*oftheprogramwhich*\n"

*cancalculatetheBP*\n"

Thanksforusing!

exit(0);

/*读取训练样本*/

GetTrainingData()

{inti,j,m;

floatdatr;

if((fp=fopen("

sample.txt"

"

r"

))==NULL)

{

printf("

Cannotopenfilestrikeanykeyexit!

"

getch();

exit

(1);

}

for(i=0;

i<

N;

i++)

{j=0;

while(j!

=(IN+ON)&

&

fscanf(fp,"

%f"

&

datr)!

=EOF)

{if(j>

IN-1)Study_Data[i].teach[j-IN]=datr;

else 

Study_Data[i].input[j]=datr;

/*printf("

\ntheStudy_Data[%d].input[%d]=%f\n%f"

i,j,Study_Data[i].input[j],datr);

*/

/*usetochecktheloadedtrainingdatas*/

j++;

fclose(fp);

\nThereare[%d]sampledatasthathavebeenloadedsuccessfully!

N*(IN+ON));

\nShowthedatawhichhasbeenloadedasfollows:

for(m=0;

m<

m++)

{for(i=0;

IN;

{printf("

Study_Data[%d].input[%d]=%f 

"

m,i,Study_Data[m].input[i]);

for(j=0;

j<

ON;

j++)

Study_Data[%d].teach[%d]=%f 

m,j,Study_Data[m].teach[j]);

\n\n\nPressanykeytobeginStudy..."

return1;

/*初始化权、阈值子程序*/

initial()

{inti;

intii;

intj;

intjj;

intk;

intkk;

\nRandsomWeightvalueandBiasvalueasfollow:

srand(time(NULL));

/*随机函数种子*/

\nWeightValue:

HN;

i++){

j++) 

{W[i][j]=(float)(((rand()/32767.0)*2-1)/2);

/*初始化输入层到隐层的权值,随机模拟0.5~-0.5*/

\nw[%d][%d]=%f"

i,j,W[i][j]);

for(ii=0;

ii<

ii++){

for(jj=0;

jj<

jj++) 

{V[ii][jj]=(float)(((rand()/32767.0)*2-1)/2);

/*初始化隐层到输出层的权值,随机模拟0.5~-0.5*/

\nV[%d][%d]=%f"

ii,jj,V[ii][jj]);

\n\nBiasValue:

for(k=0;

k<

k++){

YU_HN[k]=1.0;

/*隐层阈值初始化,-0.01~0.01之间*/

\nYU_HN[%d]=%f"

k,YU_HN[k]);

for(kk=0;

kk<

kk++){

YU_ON[kk]=1.0;

/*输出层阈值初始化,-0.01~0.01之间*/

\nYU_ON[%d]=%f\n"

kk,YU_ON[kk]);

\n\n\n\n\nPressanykeytostartculculating...:

Pleasewait..."

/*第m个学习样本输入子程序*/

input_P(intm)

{inti,j;

for(i=0;

i++) 

{P[i]=Study_Data[m].input[i];

retu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1