文档详情

BP神经网络实现(Java代码)讲诉.doc

发布:2017-01-08约9.23千字共8页下载文档
文本预览下载声明
? BP神经网络实现(Java代码) 神经网络的原理虽然理解起来不难,但是要是想实现它,还是需要做一些工作的,并且有很多细节性的东西需要注意。通过参阅各种相关资料,以及参考网络上已有的资源,自己写了一个含有一个隐含层,且只能有一个输出单元的简单的BP网络,经过测试,达到了预期的效果。 需要说明的是,神经网络的每个输入都在[0,1]中,输出也在[0,1]中,在使用神经网络解决实际问题的时候,还需要对实际问题的输入输出进行归一化处理。另外,尽量不要使得神经网络的输入或输出接近于0或1,这样会影响拟合效果。 我用正弦函数进行了一次测试,效果如图所示: 以下是相关的代码: 1.神经网络代码 [java]?view plaincopy package?pkg1;?? ?? import?java.util.Scanner;?? ?? /*? ?*?? ?*/?? public?class?TestNeuro?{?? ?? ????private?int?INPUT_DIM=1;?? ????private?int?HIDDEN_DIM=20;?? ????private?double?LEARNING_RATE=0.05;?? ????double?[][]?input_hidden_weights=new?double[INPUT_DIM][HIDDEN_DIM];?? ????double?[]?hidden_output_weights=new?double[HIDDEN_DIM];?? ????double[]?hidden_thresholds=new?double[HIDDEN_DIM];?? ????double?output_threshold;?? ?????? ????public?static?void?main(String[]args){?? ????????Scanner?in=new?Scanner(System.in);?? ????????TestNeuro?neuro=new?TestNeuro(1,5);?? ????????neuro.initialize();?? ????????for(int?i=0;i10000;i++){?? ????????????double[]?input=new?double[1];?? ????????????input[0]=Math.random();?? ????????????double?expectedOutput=input[0]*input[0];?? ????????????//System.out.println(input?:?+input[0]+\t\texpectedOutput?:?+expectedOutput);?? ????????????//System.out.println(predict?before?training?:?+neuro.predict(input));?? ????????????neuro.trainOnce(input,?expectedOutput);?? ????????????//System.out.println(predict?after?training?:?+neuro.predict(input));?? ????????????//in.next();?? ????????}?? ????????while(true){?? ????????????//neuro.printLinks();?? ????????????double[]?input=new?double[1];?? ????????????input[0]=in.nextDouble();?? ????????????double?expectedOutput=in.nextDouble();?? ????????????System.out.println(predict?before?training?:?+neuro.predict(input));?? ????????????neuro.trainOnce(input,?expectedOutput);?? ????????????System.out.println(predict?after?training?:?+neuro.predict(input));?? ?????????????? ????????}?? ????}?? ?????? ????public?TestNeuro(int?input_dimension,int?hidden_dimension){?? ????????this.INPUT_DIM=input_dime
显示全部
相似文档