




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importno.uib.cipr.matrix.DenseMatrix;importno.uib.cipr.matrix.DenseVector;importno.uib.cipr.matrix.Matrices;importno.uib.cipr.matrix.NotConvergedEx
2、ceptionpublicclasselmprivateDenseMatrixtrain_set;privateDenseMatrixtest_set;privateintnumTrainData;privateintnumTestData;privateDenseMatrixInputWeight;privatefloatTrainingTime;privatefloatTestingTime;privatedoubleTrainingAccuracy,TestingAccuracyprivateintElm_Type;privateintNumberofHiddenNeurons;priv
3、ateintNumberofOutputNeurons;privateintNumberofInputNeurons;privateStringfunc;privateintlabel;privateDenseMatrixBiasofHiddenNeurons;privateDenseMatrixOutputWeightprivateDenseMatrixtestP;privateDenseMatrixtestT;privateDenseMatrixY;privateDenseMatrixT;publicelm(intelm_type,intnumberofHiddenNeurons,Stri
4、ngActivationFunction)Elm_Type=elm_type;NumberofHiddenNeurons=numberofHiddenNeuronsfunc=ActivationFunction;TrainingTime=0;0;TrainingAccuracy=0;TestingAccuracy=0;NumberofOutputNeurons=1;)publicelm()publicDenseMatrixloadmatrix(Stringfilename)throwsIOExceptionBufferedReaderreader=newBufferedReader(newFi
5、leReader(newFile(filename);StringfirstlineString=reader.readLine();Stringstrings=firstlineString.split("");intm=Integer.parseInt(strings0);intn=Integer.parseInt(strings1);if(strings.length>2)NumberofOutputNeurons=Integer.parseInt(strings2)DenseMatrixmatrix=newDenseMatrix(m,n);firstlineS
6、tring=reader.readLine();inti=0;while(i<m)Stringdatatrings=firstlineString.split("");for(intj=0;j<n;j+)matrix.set(i,j,Double.parseDouble(datatringsj);)firstlineString=reader.readLine();)returnmatrix;)publicvoidtrain(StringTrainingData_File)throwsNotConvergedExceptiontrytrain_set=loadm
7、atrix(TrainingData_File);catch(IOExceptione)e.printStackTrace()train()publicvoidtrain(doubletraindata)throwsNotConvergedException/classificationrequireathenumberofclasstrain_set=newDenseMatrix(traindata);intm=train_set.numRows();if(Elm_Type=1)doublemaxtag=traindata00;for(inti=0;i<m;i+)if(traindat
8、ai0>maxtag)maxtag=traindatai0;)NumberofOutputNeurons=(int)maxtag+)train();)privatevoidtrain()throwsNotConvergedExceptionnumTrainData=train_set.numRows()NumberofInputNeurons=train_set.numColumns()-InputWeight=(DenseMatrix)Matrices.random(NumberofHiddenNeuronsJ1;NumberofInputNeurons)DenseMatrixtran
9、sT=DenseMatrixtransP=NumberofInputNeurons)for(inti=0;transT.set(ifor(intj=transP.set(inewDenseMatrix(numTrainData,1);newDenseMatrix(numTrainData,;i<numTrainData;i+),0,train_set.get(i,0);1;j<=NumberofInputNeurons;j+),j-1,train_set.get(i,j);newDenseMatrix(1,numTrainData);DenseMatrixP=newDenseMat
10、rix(NumberofInputNeuronstransT.transpose(T);transP.transpose(P),numTrainData);if(Elm_Type!=0)/CLASSIFIERlabel=newintNumberofOutputNeurons;for(inti=0;i<NumberofOutputNeurons;i+)labeli=i;DenseMatrixtempT=newDenseMatrix(NumberofOutputNeurons,numTrainData);tempT.zero();for(inti=0;i<numTrainData;i+
11、)intj=0;for(j=0;j<NumberofOutputNeurons;j+)if(label。=T.get(0,i)break;tempT.set(j,i,1);T=newDenseMatrix(NumberofOutputNeurons,numTrainData);/T=temp_T*2-1;for(inti=0;i<NumberofOutputNeurons;i+)for(intj=0;j<numTrainData;j+)T.set(i,j,tempT.get(i,j)*2-1);transT=newDenseMatrix(numTrainData,Number
12、ofOutputNeurons);T.transpose(transT);longstart_time_train=System.currentTimeMillis();BiasofHiddenNeurons=(DenseMatrix)Matrices.random(NumberofHiddenNeurons,1);DenseMatrixtempH=newDenseMatrix(NumberofHiddenNeurons,numTrainData);InputWeight.mult(P,tempH);/DenseMatrixind=newDenseMatrix(1,numTrainData);
13、DenseMatrixBiasMatrix=newDenseMatrix(NumberofHiddenNeuronsnumTrainData);for(intj=0;j<numTrainData;j+)for(inti=0;i<NumberofHiddenNeurons;i+)BiasMatrix.set(i,j,BiasofHiddenNeurons.get(i0);tempH.add(BiasMatrix);DenseMatrixH=newDenseMatrix(NumberofHiddenNeuronsnumTrainData);if(func.startsWith(&quo
14、t;sig")for(intj=0;j<NumberofHiddenNeurons;j+)for(inti=0;i<numTrainData;i+)doubletemp=tempH.get(j,i);temp=1.0f/(1+Math.exp(-temp);H.set(j,i,temp);elseif(func.startsWith("sin")for(intj=0;j<NumberofHiddenNeurons;j+)for(inti=0;i<numTrainData;i+)doubletemp=tempH.get(j,i);temp=M
15、ath.sin(temp);H.set(j,i,temp);elseif(func.startsWith("hardlim")elseif(func.startsWith("tribas")elseif(func.startsWith("radbas")DenseMatrixHt=newDenseMatrix(numTrainDataH.transpose(Ht);Inverseinvers=new,NumberofHiddenNeurons)Inverse(Ht);DenseMatrixpinvHt=invers.getMPInve
16、rse()OutputWeight=newDenseMatrix(NumberofHiddenNeurons,NumberofOutputNeurons);pinvHt.mult(transT,OutputWeight);longend_time_train=System.currentTimeMillis();TrainingTime=(end_time_train-start_time_train)*1.0f/1000;DenseMatrixYt=newDenseMatrix(numTrainData,NumberofOutputNeurons);Ht.mult(OutputWeight,
17、Yt);Y=newDenseMatrix(NumberofOutputNeurons,numTrainData);Yt.transpose(Y);if(Elm_Type=0)doubleMSE=0;for(inti=0;i<numTrainData;i+)MSE+=(Yt.get(i,0)-transT.get(i,0)*(Yt.get(i,0)-transT.get(i,0);TrainingAccuracy=Math.sqrt(MSE/numTrainData);elseif(Elm_Type=1)floatMissClassificationRate_Training=0;for(
18、inti=0;i<numTrainData;i+)doublemaxtag1=Y.get(0,i);inttag1=0;doublemaxtag2=T.get(0,i);inttag2=0;for(intj=1;j<NumberofOutputNeurons;j+)if(Y.get(j,i)>maxtag1)maxtag1=Y.get(j,i);tag1=j;if(T.get(j,i)>maxtag2)maxtag2=T.get(j,i);tag2=j;if(tag1!=tag2)MissClassificationRate_Training+;1.0f/numTrai
19、nDataTrainingAccuracy=MissClassificationRate_Training*publicvoidtest(StringTestingData_File)trytest_set=loadmatrix(TestingData_File)catch(IOExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();numTestData=test_set.numRows()DenseMatrixttestT=DenseMatrixttestP=NumberofInputNeurons)for(inti=0;tt
20、estT.set(ifor(intj=ttestP.set(inewDenseMatrix(numTestData,1);newDenseMatrix(numTestData,;i<numTestData;i+),0,test_set.get(i,0);1;j<=NumberofInputNeurons;j+),j-1,test_set.get(i,j);testT=newDenseMatrix(1,numTestData);testP=newDenseMatrix(NumberofInputNeurons,numTestData);ttestT.transpose(testT);
21、ttestP.transpose(testP);longstart_time_test=System.currentTimeMillis();DenseMatrixtempH_test=newDenseMatrix(NumberofHiddenNeuronsnumTestData);InputWeight.mult(testP,tempH_test);DenseMatrixBiasMatrix2=newDenseMatrix(NumberofHiddenNeurons,numTestData);for(intj=0;j<numTestData;j+)for(inti=0;i<Num
22、berofHiddenNeurons;i+)BiasMatrix2.set(i,j,BiasofHiddenNeurons.get(i0);DenseMatrixH_test=numTestData);tempH_test.add(BiasMatrix2)newDenseMatrix(NumberofHiddenNeuronsif(func.startsWith("sig")for(intj=0;j<NumberofHiddenNeurons;j+)for(inti=0;i<numTestData;i+)doubletemp=tempH_test.get(j,i
23、);temp=1.0f/(1+Math.exp(-temp);H_test.set(j,i,temp);一elseif(func.startsWith("sin")for(intj=0;j<NumberofHiddenNeurons;j+)for(inti=0;i<numTestData;i+)doubletemp=tempH_test.get(j,i);temp=Math.sin(temp);H_test.set(j,i,temp);一elseif(func.startsWith("hardlim")elseif(func.startsWi
24、th("tribas")elseif(func.startsWith("radbas")DenseMatrixtransH_test=newDenseMatrix(numTestData,NumberofHiddenNeurons)H_test.transpose(transH_test);DenseMatrixYout=newDenseMatrix(numTestData,NumberofOutputNeurons)transH_test.mult(OutputWeight,Yout);DenseMatrixtestY=newDenseMatrix(N
25、umberofOutputNeurons,numTestData);Yout.transpose(testY);BI|HHIIItlBI_tllllHyillBIIIIIIITIBIBIll(H1.0f/1000;TestingTime=(end_time_test-start_time_test)/REGRESSIONif(Elm_Type=0)doubleMSE=0;for(inti=0;i<numTestData;i+)MSE+=(Yout.get(i,0)-testT.get(0,i)*(Yout.get(i,0)-testT.get(0,i);TestingAccuracy=M
26、ath.sqrt(MSE/numTestData)/CLASSIFIERelseif(Elm_Type=1)DenseMatrixtemptestT=newDenseMatrix(NumberofOutputNeurons,numTestData);for(inti=0;i<numTestData;i+)intj=0;for(j=0;j<NumberofOutputNeurons;j+)if(label。=testT.get(0,i)break;temptestT.set(j,i,1);testT=newDenseMatrix(NumberofOutputNeurons,numTe
27、stData);for(inti=0;i<NumberofOutputNeurons;i+)for(intj=0;j<numTestData;j+)testT.set(i,j,temptestT.get(i,j)*2-1);floatMissClassificationRate_Testing=0;for(inti=0;i<numTestData;i+)doublemaxtag1=testY.get(0,i);inttag1=0;doublemaxtag2=testT.get(0,i);inttag2=0;for(intj=1;j<NumberofOutputNeuro
28、ns;j+)if(testY.get(j,i)>maxtag1)HigHIHYIIIIIIMIIHtagl=j;)if(testT.get(j,i)>maxtag2)maxtag2=testT.get(j,i);tag2=j;)if(tagl!=tag2)MissClassificationRate_Testing+一TestingAccuracy=1-MissClassificationRate_Testing*1.0f/numTestDatapublicdoubletest_set=returnpublicdoubletest_set=returntestOut(doublei
29、npt)newDenseMatrix(inpt);testOut();testOut(doubleinpt)newDenseMatrix(newDenseVector(inpt)testOut();/OutputnumTestData*NumberofOutputNeuronsprivatedoubletestOut()numTestData=test_set.numRows();1);j+)j);NumberofInputNeurons=test_set.numColumns()-1;DenseMatrixttestT=newDenseMatrix(numTestDataDenseMatri
30、xttestP=newDenseMatrix(numTestDataNumberofInputNeurons);for(inti=0;i<numTestData;i+)ttestT.set(i,0,test_set.get(i,0);for(intj=1;j<=NumberofInputNeuronsttestP.set(i,j-1,test_set.get(i,一testT=newDenseMatrix(1,numTestData);testP=newDenseMatrix(NumberofInputNeurons,numTestData);ttestT.transpose(te
31、stT);ttestP.transpose(testP);DenseMatrixtempH_test=newDenseMatrix(NumberofHiddenNeuronsnumTestData);InputWeight.mult(testP,tempH_test);DenseMatrixBiasMatrix2=newDenseMatrix(NumberofHiddenNeurons,numTestData);for(intj=0;j<numTestData;j+)for(inti=0;i<NumberofHiddenNeurons;i+)BiasMatrix2.set(i,j,
32、BiasofHiddenNeurons.get(i0);tempH_test.add(BiasMatrix2);DenseMatrixH_test=newDenseMatrix(NumberofHiddenNeuronsnumTestData);if(func.startsWith("sig")for(intj=0;j<NumberofHiddenNeurons;j+)for(inti=0;i<numTestData;i+)doubletemp=tempH_test.get(j,i);temp=1.0f/(1+Math.exp(-temp);H_test.set
33、(j,i,temp);一elseif(func.startsWith("sin")for(intj=0;j<NumberofHiddenNeurons;j+)for(inti=0;i<numTestData;i+)doubletemp=tempH_test.get(j,i);temp=Math.sin(temp);H_test.set(j,i,temp);elseif(func.startsWith("hardlim")elseif(func.startsWith("tribas")elseif(func.startsWi
34、th("radbas")DenseMatrixtransH_test=newDenseMatrix(numTestData,NumberofHiddenNeurons);H_test.transpose(transH_test);DenseMatrixYout=newDenseMatrix(numTestData,NumberofOutputNeurons);transH_test.mult(OutputWeight,Yout);double口result=newdoublenumTestData;if(Elm_Type=0)for(inti=0;i<numTestD
35、ata;i+)resulti=Yout.get(i,0);)elseif(Elm_Type=1)for(inti=0;i<numTestData;i+)inttagmax=0;doubletagvalue=Yout.get(i,0);for(intj=1;j<NumberofOutputNeurons;j+)if(Yout.get(i,j)>tagvalue)tagvalue=Yout.get(i,j);tagmax=j;)resulti=tagmax;)returnresult;)publicfloatgetTrainingTime()returnTrainingTime;
36、)publicdoublegetTrainingAccuracy()returnTrainingAccuracy;)publicfloatgetTestingTime()returnTestingTime;publicdoublegetTestingAccuracy()returnTestingAccuracy;publicintgetNumberofInputNeurons()returnNumberofInputNeurons;publicintgetNumberofHiddenNeurons()returnNumberofHiddenNeurons;publicintgetNumberofOutputNeurons()returnNumberofO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國合成纖維聚酯切片數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國仿皮表盒數(shù)據(jù)監(jiān)測研究報告
- 河南省周口市扶溝縣2024-2025學年九年級上學期1月期末化學試題(含答案)
- 跳水闖關考試題及答案
- 2025年軍隊文職人員招聘之軍隊文職法學能力測試試卷A卷附答案
- 2025年軍隊文職人員招聘之軍隊文職政治學全真模擬考試試卷A卷含答案
- 2019-2025年消防設施操作員之消防設備中級技能題庫檢測試卷B卷附答案
- 2024河北省中考英語真題含答案
- 郵輪切艙合同(2篇)
- 采購追加合同范本(2篇)
- (二調)武漢市2025屆高中畢業(yè)生二月調研考試 生物試卷(含標準答案)
- (一模)臨沂市2025屆高三高考第一次模擬考試政治試卷(含答案詳解)
- 2025年中考百日誓師大會校長發(fā)言稿(二)
- 1.2男生女生課件(共15張)-2024-2025學年統(tǒng)編版道德與法治七年級下冊
- 2025年共青科技職業(yè)學院單招職業(yè)技能測試題庫學生專用
- Module 2 Unit 2 It will snow in Harbin.(說課稿)-2023-2024學年外研版(三起)英語六年級下冊
- 真需求-打開商業(yè)世界的萬能鑰匙
- 教學能力大賽決賽獲獎-教學實施報告-(完整圖文版)
- 完整戶口本英文翻譯模板(共4頁)
- 高二通用技術-經典結構的欣賞課件說課講解
- 數(shù)獨入門技巧宮摒除法使用
評論
0/150
提交評論