JOONE实现人工智能

  1. packagecom.sweetop.test;
  2. importjava.io.Serializable;
  3. importjava.util.Arrays;
  4. importjava.util.Vector;
  5. importorg.joone.engine.FullSynapse;
  6. importorg.joone.engine.LinearLayer;
  7. importorg.joone.engine.Monitor;
  8. importorg.joone.engine.NeuralNetEvent;
  9. importorg.joone.engine.NeuralNetListener;
  10. importorg.joone.engine.Pattern;
  11. importorg.joone.engine.SigmoidLayer;
  12. importorg.joone.engine.learning.TeachingSynapse;
  13. importorg.joone.io.FileInputSynapse;
  14. importorg.joone.io.FileOutputSynapse;
  15. importorg.joone.io.MemoryInputSynapse;
  16. importorg.joone.io.MemoryOutputSynapse;
  17. importorg.joone.net.NeuralNet;
  18. publicclassTestimplementsNeuralNetListener,Serializable{
  19. /**
  20. *
  21. */
  22. privatestaticfinallongserialVersionUID=61750666816215273L;
  23. privateNeuralNetnnet=null;
  24. privateMemoryInputSynapseinputSynapse,desiredOutputSynapse;
  25. privateMemoryOutputSynapseoutputSynapse;
  26. //XORinput
  27. privatedouble[][]inputArray=newdouble[][]{{1.0,1.0},
  28. {1.0,2.0},{2.0,2.0},{2.0,3.0},{1.0,3.0}};
  29. //XORdesiredoutput
  30. privatedouble[][]desiredOutputArray=newdouble[][]{{2.0/10},
  31. {3.0/10},{4.0/10},{5.0/10},{4.0/10}};
  32. protectedvoidinitNeuralNet(){
  33. //Firstcreatethethreelayers
  34. LinearLayerinput=newLinearLayer();
  35. SigmoidLayerhidden=newSigmoidLayer();
  36. SigmoidLayeroutput=newSigmoidLayer();
  37. input.setLayerName("input");
  38. hidden.setLayerName("hidden");
  39. output.setLayerName("output");
  40. //setthedimensionsofthelayers
  41. input.setRows(2);
  42. hidden.setRows(3);
  43. output.setRows(1);
  44. //NowcreatethetwoSynapses
  45. FullSynapsesynapse_IH=newFullSynapse();/*input->hiddenconn.*/
  46. FullSynapsesynapse_HO=newFullSynapse();/*hidden->outputconn.*/
  47. //Connecttheinputlayerwhitthehiddenlayer
  48. input.addOutputSynapse(synapse_IH);
  49. hidden.addInputSynapse(synapse_IH);
  50. //Connectthehiddenlayerwhittheoutputlayer
  51. hidden.addOutputSynapse(synapse_HO);
  52. output.addInputSynapse(synapse_HO);
  53. //theinputtotheneuralnet
  54. inputSynapse=newMemoryInputSynapse();
  55. input.addInputSynapse(inputSynapse);
  56. //theoutputoftheneuralnet
  57. outputSynapse=newMemoryOutputSynapse();
  58. output.addOutputSynapse(outputSynapse);
  59. //TheTraineranditsdesiredoutput
  60. desiredOutputSynapse=newMemoryInputSynapse();
  61. TeachingSynapsetrainer=newTeachingSynapse();
  62. trainer.setDesired(desiredOutputSynapse);
  63. nnet=newNeuralNet();
  64. nnet.addLayer(input,NeuralNet.INPUT_LAYER);
  65. nnet.addLayer(hidden,NeuralNet.HIDDEN_LAYER);
  66. nnet.addLayer(output,NeuralNet.OUTPUT_LAYER);
  67. nnet.setTeacher(trainer);
  68. output.addOutputSynapse(trainer);
  69. train();
  70. //File
  71. }
  72. publicvoidtest(double[][]d){
  73. inputSynapse.setInputArray(d);
  74. inputSynapse.setAdvancedColumnSelector("1,2");
  75. nnet.getMonitor().setTotCicles(1);
  76. nnet.start();
  77. nnet.getMonitor().Go();
  78. for(Objecto:outputSynapse.getAllPatterns()){
  79. Patternp=(Pattern)o;
  80. System.out.println(10*p.getArray()[0]);
  81. }
  82. }
  83. publicvoidtrain(){
  84. //settheinputs
  85. inputSynapse.setInputArray(inputArray);
  86. inputSynapse.setAdvancedColumnSelector("1,2");
  87. //setthedesiredoutputs
  88. desiredOutputSynapse.setInputArray(desiredOutputArray);
  89. desiredOutputSynapse.setAdvancedColumnSelector("1");
  90. //getthemonitorobjecttotrainorfeedforward
  91. Monitormonitor=nnet.getMonitor();
  92. //setthemonitorparameters
  93. monitor.setLearningRate(0.8);
  94. monitor.setMomentum(0.3);
  95. monitor.setTrainingPatterns(inputArray.length);
  96. monitor.setTotCicles(100000);
  97. monitor.setLearning(true);
  98. nnet.addNeuralNetListener(this);
  99. nnet.start();
  100. nnet.getMonitor().Go();
  101. for(Objecto:outputSynapse.getAllPatterns()){
  102. Patternp=(Pattern)o;
  103. System.out.println(10*p.getArray()[0]);
  104. }
  105. }
  106. publicvoidcicleTerminated(NeuralNetEvente){
  107. }
  108. publicvoiderrorChanged(NeuralNetEvente){
  109. }
  110. publicvoidnetStarted(NeuralNetEvente){
  111. //TODOAuto-generatedmethodstub
  112. }
  113. publicvoidnetStopped(NeuralNetEvente){
  114. //TODOAuto-generatedmethodstub
  115. }
  116. publicvoidnetStoppedError(NeuralNetEvente,Stringerror){
  117. }
  118. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值