BP神经网络算法java实现.docx

上传人:自*** 文档编号:126227643 上传时间:2020-03-23 格式:DOCX 页数:5 大小:33.93KB
返回 下载 相关 举报
BP神经网络算法java实现.docx_第1页
第1页 / 共5页
BP神经网络算法java实现.docx_第2页
第2页 / 共5页
BP神经网络算法java实现.docx_第3页
第3页 / 共5页
BP神经网络算法java实现.docx_第4页
第4页 / 共5页
BP神经网络算法java实现.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《BP神经网络算法java实现.docx》由会员分享,可在线阅读,更多相关《BP神经网络算法java实现.docx(5页珍藏版)》请在金锄头文库上搜索。

1、BP神经网络算法java实现package backp;import java.*;import java.awt.*;import java.io.*;import java.util.Scanner;/by realmagicianimport org.omg.CORBA.portable.InputStream;public class backpro public static void main(String args)String filename=new String(delta.in);try FileInputStream fileInputStream=new FileIn

2、putStream(filename);Scanner sinScanner=new Scanner(fileInputStream);int attN,hidN,outN,samN;attN=sinScanner.nextInt();outN=sinScanner.nextInt();hidN=sinScanner.nextInt();samN=sinScanner.nextInt();/System.out.println(attN+ +outN+ +hidN+ +samN);double samin=new doublesamNattN;double samout=new doubles

3、amNoutN;for(int i=0;isamN;+i)for(int j=0;jattN;+j)saminij=sinScanner.nextDouble();for(int j=0;joutN;+j)samoutij=sinScanner.nextDouble();int times=10000;double rate=0.5;BP2 bp2=new BP2(attN,outN,hidN,samN,times,rate);bp2.train(samin, samout);for(int i=0;ihidN;+i)for(int j=0;jattN;+j)System.out.print(

4、bp2.dw1ij+ );System.out.println();for(int i=0;ioutN;+i)for(int j=0;jhidN;+j)System.out.print(bp2.dw2ij+ );System.out.println();while(true)double testout=new doubleoutN;double testin=new doubleattN;Scanner testinScanner=new Scanner(System.in);for(int i=0;iattN;+i)testini=testinScanner.nextDouble();te

5、stout=bp2.getResault(testin);for(int i=0;ioutN;+i)System.out.print(testouti+ );System.out.println(outN); catch (IOException e) / TODO: handle exceptionSystem.out.println(End);class BP2/包含一个隐含层的神经网络double dw1,dw2;int hidN;/隐含层单元个数int samN;/学习样例个数int attN;/输入单元个数int outN;/输出单元个数int times;/迭代次数double r

6、ate;/学习速率boolean trained=false;/保证在得结果前,先训练BP2(int attN,int outN,int hidN,int samN,int times,double rate)this.attN=attN;this.outN=outN;this.hidN=hidN;this.samN=samN;dw1=new doublehidNattN+1;/每行最后一个是阈值w0for(int i=0;ihidN;+i)/每行代表所有输入到i隐藏单元的权值for(int j=0;j=attN;+j)dw1ij=Math.random()/2;dw2=new doubleo

7、utNhidN+1;/输出层权值,每行最后一个是阈值w0for(int i=0;ioutN;+i)/每行代表所有隐藏单元到i输出单元的权值for(int j=0;j0)/迭代训练dis=0;for(int i=0;isamN;+i)/遍历每个样例 saminifor(int j=0;jhidN;+j)/计算每个隐含层单元的结果temphidj=0;for(int k=0;kattN;+k)temphidj+=dw1jk*saminik;temphidj+=dw1jattN;/计算阈值产生的隐含层结果temphidj=1.0/(1+Math.exp(-temphidj );for(int j=0

8、;joutN;+j)/计算每个输出层单元的结果tempoutj=0;for(int k=0;khidN;+k)tempoutj+=dw2jk*temphidk;tempoutj+=dw2jhidN;/计算阈值产生的输出结果tempoutj=1.0/(1+Math.exp( -tempoutj );/计算每个输出单元的误差项for(int j=0;joutN;+j)wcoutj=tempoutj*(1-tempoutj)*(samoutij-tempoutj);dis+=Math.pow(samoutij-tempoutj),2);/计算每个隐藏单元的误差项for(int j=0;jhidN;+

9、j)double wche=0;for(int k=0;koutN;+k)/计算输出项误差和wche+=wcoutk*dw2kj;wchidj=temphidj*(1-temphidj)*wche;/改变输出层的权值for(int j=0;joutN;+j)for(int k=0;khidN;+k)dw2jk+=rate*wcoutj*temphidk;dw2jhidN=rate*wcoutj;/改变隐含层的权值for(int j=0;jhidN;+j)for(int k=0;kattN;+k)dw1jk+=rate*wchidj*saminik;dw1jattN=rate*wchidj;if

10、(dis0.003)break;trained=true;public double getResault(double samin)double temphid=new doublehidN;double tempout=new doubleoutN;if(trained=false)return null;for(int j=0;jhidN;+j)/计算每个隐含层单元的结果temphidj=0;for(int k=0;kattN;+k)temphidj+=dw1jk*samink;temphidj+=dw1jattN;/计算阈值产生的隐含层结果temphidj=1.0/(1+Math.exp(-temphidj );for(int j=0;joutN;+j)/计算每个输出层单元的结果tempoutj=0;for(int k=0;khidN;+k)tempoutj+=dw2jk*temphidk;tempoutj+=dw2jhidN;/计算阈值产生的输出结果tempoutj=1.0/(1+Math.exp( -tempoutj);/System.out.print(tempoutj+ );return tempout;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号