免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 FileInputStream(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 doublesamNoutN;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(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();testout=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 rate;/学习速率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 doubleoutNhidN+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;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;+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(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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋装修协议合同书
- 房屋质量验收协议书
- 房屋隐私改造协议书
- 房租转租代租协议书
- 手写版承揽合同范本
- 手术合同的免责协议
- 手机屏蔽柜合同范本
- 手表展柜转让协议书
- 打印机押金合同范本
- 打火买挖机合同范本
- 2025年福州辅警考试题库(附答案)
- 2025至2030中国高模量碳纤维行业产业运行态势及投资规划深度研究报告
- DB45-T 2660-2023 孕产妇心理健康诊疗服务规范
- 《冠状动脉粥样硬化诊治进展》课件
- 2025年兰州市初中语文学业水平考试卷附答案解析
- 2026届安徽省江南十校化学高一第一学期期中考试模拟试题含解析
- 粉尘防护基本知识培训课件
- 个体防护知识培训课件
- 2025年湖北省武汉市中考数学试卷(含答案解析)
- 第五单元 化学反应的定量关系单元练习卷(含答案)2024-2025人教版九年级化学(上)
- 长期市集摊位管理办法
评论
0/150
提交评论