资源描述:
《非线性分类问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、作业二非线性分类问题ZY1303243莫昊样本及示教信息X1X2Y(输出)1101200030114110样本及示教信息表明这个问题为亦或分类问题程序代码/*************BP网络解决亦或分类问题****************///该网络为2输入、1输出网络,共有输入层、隐层、输出层3层//隐层层数为1,包含3个元#include#include#include#includefloatc=1.0;/***激励函数中的常数****/
2、floatalpha=1;floatbeta=0.5;/***惯性常数和学习率***/floats(float(u))/***激励函数***/{floats;s=1/(1+exp(-u));return(s);}floatdets_detu(float(u))/****激励函数的导数****/{floatdet_s;det_s=s(u)*(1-s(u));return(det_s);}intmain(){floatx[4][2]={1,0,0,0,0,1,1,1};floatyt[4]={1,0,1,0};inti,j
3、,k,n=0;floaty[4],hide[3],w1[2][3],w2[3],e1[2][3],e2[3],d1[2][3],d2[3];//hide表示隐层的输出,w1和w2分别是第一层到第二层、第二层到第三层的权值,e1、e2为权值调整误差printf("**************随机选定权值的初值***************");for(j=0;j<3;j++){w2[j]=2.0*rand()/(RAND_MAX+1.0)-1.0;printf("w2[%d]=%6.6f",j,w2[j]);}f
4、or(k=0;k<2;k++)for(j=0;j<3;j++){w1[k][j]=2.0*rand()/(RAND_MAX+1.0)-1.0;printf("w1[%d][%d]=%6.6f,",k,j,w2[j]);}printf("********************最终结果*******************");while(n<50000){for(i=0;i<4;i++){for(j=0;j<3;j++)hide[j]=s(w1[0][j]*x[i][0]+w1[1][j]*x[i][1]);y
5、[i]=s(hide[0]*w2[0]+hide[1]*w2[1]+hide[2]*w2[2]);for(j=0;j<3;j++){d2[j]=(y[i]-yt[i])*dets_detu(hide[0]*w2[0]+hide[1]*w2[1]+hide[2]*w2[2]);e2[j]=-beta*hide[j]*d2[j];}for(j=0;j<3;j++)w2[j]=alpha*w2[j]+e2[j];for(k=0;k<2;k++)for(j=0;j<3;j++){d1[k][j]=w2[j]*d2[j]*det
6、s_detu(w1[0][j]*x[i][0]+w1[1][j]*x[i][1]);e1[k][j]=-beta*x[i][k]*d1[k][j];}for(k=0;k<2;k++)for(j=0;j<3;j++)w1[k][j]=alpha*w1[k][j]+e1[k][j];n++;}}for(j=0;j<3;j++)printf("w2[%d]=%6.6f",j,w2[j]);for(k=0;k<2;k++)for(j=0;j<3;j++)printf("w1[%d][%d]=%6.6f",k,j,w1[
7、k][j]);for(i=0;i<4;i++)printf("y[%d]=%6.6f",i,y[i]);Sleep(60000);return(0);}运行结果1、迭代1000次2、迭代10000次3迭代50000次结论随着迭代次数的增加,BP网络输出不断接近理想输出,证明程序可行。