資源描述:
《BP神經(jīng)網(wǎng)絡(luò)算法的C語言實現(xiàn)代碼.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、//BP神經(jīng)網(wǎng)絡(luò)算法,c語言版本//VS2010下,無語法錯誤,可直接運行//添加了簡單注釋//歡迎學(xué)習(xí)交流#include#include#include#include#defineN_Out2//輸出向量維數(shù)#defineN_In3//輸入向量維數(shù)#defineN_Sample6//樣本數(shù)量//BP人工神經(jīng)網(wǎng)絡(luò)typedefstruct{intLayerNum;//中間層數(shù)量doublev[N_In][50];//中間層權(quán)矩陣i,中間
2、層節(jié)點最大數(shù)量為50doublew[50][N_Out];//輸出層權(quán)矩陣doubleStudyRate;//學(xué)習(xí)率doubleAccuracy;//精度控制參數(shù)intMaxLoop;//最大循環(huán)次數(shù)}BPNet;//Sigmoid函數(shù)doublefnet(doublenet){return1/(1+exp(-net));}//初始化intInitBpNet(BPNet*BP);//訓(xùn)練BP網(wǎng)絡(luò),樣本為x,理想輸出為yintTrainBpNet(BPNet*BP,doublex[N_Sample][N_In],inty[N_Sample][N_Out]);//使用
3、BP網(wǎng)絡(luò)intUseBpNet(BPNet*BP);//主函數(shù)intmain(){//訓(xùn)練樣本doublex[N_Sample][N_In]={{0.8,0.5,0},{0.9,0.7,0.3},{1,0.8,0.5},{0,0.2,0.3},{0.2,0.1,1.3},{0.2,0.7,0.8}};//理想輸出inty[N_Sample][N_Out]={{0,1},{0,1},{0,1},{1,1},{1,0},{1,0}};BPNetBP;InitBpNet(&BP);//初始化BP網(wǎng)絡(luò)結(jié)構(gòu)TrainBpNet(&BP,x,y);//訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)UseB
4、pNet(&BP);//測試BP神經(jīng)網(wǎng)絡(luò)return1;}//使用BP網(wǎng)絡(luò)intUseBpNet(BPNet*BP){doubleInput[N_In];doubleOut1[50];doubleOut2[N_Out];//Out1為中間層輸出,Out2為輸出層輸出//持續(xù)執(zhí)行,除非中斷程序while(1){printf("請輸入3個數(shù):");inti,j;for(i=0;i5、;j++)Tmp+=Input[j]*(*BP).v[j][i];Out1[i]=fnet(Tmp);}for(i=0;i6、N_Sample][N_In],inty[N_Sample][N_Out]){doublef=(*BP).Accuracy;//精度控制參數(shù)doublea=(*BP).StudyRate;//學(xué)習(xí)率intLayerNum=(*BP).LayerNum;//中間層節(jié)點數(shù)doublev[N_In][50],w[50][N_Out];//權(quán)矩陣doubleChgH[50],ChgO[N_Out];//修改量矩陣doubleOut1[50],Out2[N_Out];//中間層和輸出層輸出量intMaxLoop=(*BP).MaxLoop;//最大循環(huán)次數(shù)inti,j,k,
7、n;doubleTmp;for(i=0;if&&n8、In;j+