JOONE實現人工智慧執行個體(Java原始碼)

來源:互聯網
上載者:User
  1. package com.sweetop.test;
  2. import java.io.Serializable;
  3. import java.util.Arrays;
  4. import java.util.Vector;
  5. import org.joone.engine.FullSynapse;
  6. import org.joone.engine.LinearLayer;
  7. import org.joone.engine.Monitor;
  8. import org.joone.engine.NeuralNetEvent;
  9. import org.joone.engine.NeuralNetListener;
  10. import org.joone.engine.Pattern;
  11. import org.joone.engine.SigmoidLayer;
  12. import org.joone.engine.learning.TeachingSynapse;
  13. import org.joone.io.FileInputSynapse;
  14. import org.joone.io.FileOutputSynapse;
  15. import org.joone.io.MemoryInputSynapse;
  16. import org.joone.io.MemoryOutputSynapse;
  17. import org.joone.net.NeuralNet;
  18. public class Test implements NeuralNetListener,Serializable {
  19.     /**
  20.      * 
  21.      */
  22.     private static final long serialVersionUID = 61750666816215273L;
  23.     private NeuralNet nnet = null;
  24.     private MemoryInputSynapse inputSynapse, desiredOutputSynapse;
  25.     private MemoryOutputSynapse outputSynapse;
  26.     // XOR input
  27.     private double[][] inputArray = new double[][] { { 1.0, 1.0 },
  28.             { 1.0, 2.0 }, { 2.0, 2.0 }, { 2.0, 3.0 }, { 1.0, 3.0 } };
  29.     // XOR desired output
  30.     private double[][] desiredOutputArray = new double[][] { {  2.0/10 },
  31.             { 3.0/10 }, { 4.0/10 }, { 5.0/10 }, {  4.0/10 } };
  32.     protected void initNeuralNet() {
  33.         // First create the three layers
  34.         LinearLayer input = new LinearLayer();
  35.         SigmoidLayer hidden = new SigmoidLayer();
  36.         SigmoidLayer output = new SigmoidLayer();
  37.         input.setLayerName("input");
  38.         hidden.setLayerName("hidden");
  39.         output.setLayerName("output");
  40.         // set the dimensions of the layers
  41.         input.setRows(2);
  42.         hidden.setRows(3);
  43.         output.setRows(1);
  44.         // Now create the two Synapses
  45.         FullSynapse synapse_IH = new FullSynapse(); /* input -> hidden conn. */
  46.         FullSynapse synapse_HO = new FullSynapse(); /* hidden -> output conn. */
  47.         // Connect the input layer whit the hidden layer
  48.         input.addOutputSynapse(synapse_IH);
  49.         hidden.addInputSynapse(synapse_IH);
  50.         // Connect the hidden layer whit the output layer
  51.         hidden.addOutputSynapse(synapse_HO);
  52.         output.addInputSynapse(synapse_HO);
  53.         // the input to the neural net
  54.         inputSynapse = new MemoryInputSynapse();
  55.         input.addInputSynapse(inputSynapse);
  56.         // the output of the neural net
  57.         outputSynapse = new MemoryOutputSynapse();
  58.         output.addOutputSynapse(outputSynapse);
  59.         // The Trainer and its desired output
  60.         desiredOutputSynapse = new MemoryInputSynapse();
  61.         TeachingSynapse trainer = new TeachingSynapse();
  62.         trainer.setDesired(desiredOutputSynapse);
  63.         nnet = new NeuralNet();
  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.     public void test(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 (Object o : outputSynapse.getAllPatterns()) {
  79.             Pattern p = (Pattern) o;
  80.             System.out.println(10*p.getArray()[0]);
  81.         }       
  82.     }
  83.     public void train() {
  84.         // set the inputs
  85.         inputSynapse.setInputArray(inputArray);
  86.         inputSynapse.setAdvancedColumnSelector("1,2");
  87.         // set the desired outputs
  88.         desiredOutputSynapse.setInputArray(desiredOutputArray);
  89.         desiredOutputSynapse.setAdvancedColumnSelector("1");
  90.         // get the monitor object to train or feed forward
  91.         Monitor monitor = nnet.getMonitor();
  92.         // set the monitor parameters
  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 (Object o : outputSynapse.getAllPatterns()) {
  102.             Pattern p = (Pattern) o;
  103.             System.out.println(10*p.getArray()[0]);
  104.         }
  105.     }
  106.     
  107.     public void cicleTerminated(NeuralNetEvent e) {
  108.         
  109.     }
  110.     public void errorChanged(NeuralNetEvent e) {
  111.     }
  112.     public void netStarted(NeuralNetEvent e) {
  113.         // TODO Auto-generated method stub
  114.     }
  115.     public void netStopped(NeuralNetEvent e) {
  116.         // TODO Auto-generated method stub
  117.     }
  118.     public void netStoppedError(NeuralNetEvent e, String error) {
  119.     }
  120. }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.