JOONE实现人工智能实例(Java源代码)

  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.01.0 },
  28.             { 1.02.0 }, { 2.02.0 }, { 2.03.0 }, { 1.03.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. }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
课程介绍 人工智能已经来了,它就在我们身边几乎无处不。技术正彻底改变类 人工智能已经来了,它就在我们身边几乎无处不。技术正彻底改变类 人工智能已经来了,它就在我们身边几乎无处不。技术正彻底改变类 人工智能已经来了,它就在我们身边几乎无处不。技术正彻底改变类 人工智能已经来了,它就在我们身边几乎无处不。技术正彻底改变类 人工智能已经来了,它就在我们身边几乎无处不。技术正彻底改变类 人工智能已经来了,它就在我们身边几乎无处不。技术正彻底改变类 人工智能已经来了,它就在我们身边几乎无处不。技术正彻底改变类 人工智能已经来了,它就在我们身边几乎无处不。技术正彻底改变类 人工智能已经来了,它就在我们身边几乎无处不。技术正彻底改变类 人工智能已经来了,它就在我们身边几乎无处不。技术正彻底改变类 的认知,重建人机相互协作关系。前所未有自动驾驶正在构我们头脑中出行地图和 的认知,重建人机相互协作关系。前所未有自动驾驶正在构我们头脑中出行地图和 的认知,重建人机相互协作关系。前所未有自动驾驶正在构我们头脑中出行地图和 的认知,重建人机相互协作关系。前所未有自动驾驶正在构我们头脑中出行地图和 的认知,重建人机相互协作关系。前所未有自动驾驶正在构我们头脑中出行地图和 的认知,重建人机相互协作关系。前所未有自动驾驶正在构我们头脑中出行地图和 的认知,重建人机相互协作关系。前所未有自动驾驶正在构我们头脑中出行地图和 的认知,重建人机相互协作关系。前所未有自动驾驶正在构我们头脑中出行地图和 的认知,重建人机相互协作关系。前所未有自动驾驶正在构我们头脑中出行地图和 的认知,重建人机相互协作关系。前所未有自动驾驶正在构我们头脑中出行地图和 的认知,重建人机相互协作关系。前所未有自动驾驶正在构我们头脑中出行地图和 人类生活图景,今天的 工智能技术也正在翻译、写作绘画等文和艺领域进行大胆人类生活图景,今天的 工智能技术也正在翻译、写作绘画等文和艺领域进行大胆人类生活图景,今天的 工智能技术也正在翻译、写作绘画等文和艺领域进行大胆人类生活图景,今天的 工智能技术也正在翻译、写作绘画等文和艺领域进行大胆人类生活图景,今天的 工智能技术也正在翻译、写作绘画等文和艺领域进行大胆人类生活图景,今天的 工智能技术也正在翻译、写作绘画等文和艺领域进行大胆人类生活图景,今天的 工智能技术也正在翻译、写作绘画等文和艺领域进行大胆人类生活图景,今天的 工智能技术也正在翻译、写作绘画等文和艺领域进行大胆人类生活图景,今天的 工智能技术也正在翻译、写作绘画等文和艺领域进行大胆人类生活图景,今天的 工智能技术也正在翻译、写作绘画等文和艺领域进行大胆人类生活图景,今天的 工智能技术也正在翻译、写作绘画等文和艺领域进行大胆人类生活图景,今天的 工智能技术也正在翻译、写作绘画等文和艺领域进行大胆尝试。 我们真的知道什么是人工智能吗 我们真的知道什么是人工智能吗 我们真的知道什么是人工智能吗 我们真的知道什么是人工智能吗 ? 我们真的准备好与人工智能共同发展了吗 我们真的准备好与人工智能共同发展了吗 我们真的准备好与人工智能共同发展了吗 我们真的准备好与人工智能共同发展了吗 我们真的准备好与人工智能共同发展了吗 ? 我们该如何在心理上将人和机器摆正确的位置 我们该如何在心理上将人和机器摆正确的位置 我们该如何在心理上将人和机器摆正确的位置 我们该如何在心理上将人和机器摆正确的位置 我们该如何在心理上将人和机器摆正确的位置 ? 我们该如何规划人工智能时代的未来生活…… 我们该如何规划人工智能时代的未来生活…… 我们该如何规划人工智能时代的未来生活…… 我们该如何规划人工智能时代的未来生活…… 我们该如何规划人工智能时代的未来生活…… 当人工智能时代成为必然,个应该做些什么才避免被 当人工智能时代成为必然,个应该做些什么才避免被 当人工智能时代成为必然,个应该做些什么才避免被 当人工智能时代成为必然,个应该做些什么才避免被 当人工智能时代成为必然,个应该做些什么才避免被 当人工智能时代成为必然,个应该做些什么才避免被 当人工智能时代成为必然,个应该做些什么才避免被 AI 取代?企业应该如 取代?企业应该如 何升 级,才能在新的商业变局到来前抓住先机? 级,才能在新的商业变局到来前抓住先机? 级,才能在新的商业变局到来前抓住先机? 级,才能在新的商业变局到来前抓住先机? 级,才能在新的商业变局到来前抓住先机? 我们无需担忧和惧怕人工智能时代的到来,所要做应当是尽早认清 我们无需担忧和惧怕人工智能时代的到来,所要做应当是尽早认清 我们无需担忧和惧怕人工智能时代的到来,所要做应当是尽早认清 我们无需担忧和惧怕人工智能时代的到来,所要做应当是尽早认清 我们无需担忧和惧怕人工智能时代的到来,所要做应当是尽早认清 我们无需担忧和惧怕人工智能时代的到来,所要做应当是尽早认清 我们无需担忧和惧怕人工智能时代的到来,所要做应当是尽早认清 我们无需担忧和惧怕人工智能时代的到来,所要做应当是尽早认清 我们无需担忧和惧怕人工智能时代的到来,所要做应当是尽早认清 AI 与人类 的关系,了解变革规律更好地拥抱新时代到来。 的关系,了解变革规律更好地拥抱新时代到来。 的关系,了解变革规律更好地拥抱新时代到来。 的关系,了解变革规律更好地拥抱新时代到来。 的关系,了解变革规律更好地拥抱新时代到来。 的关系,了解变革规律更好地拥抱新时代到来。 的关系,了解变革规律更好地拥抱新时代到来。 的关系,了解变革规律更好地拥抱新时代到来。 的关系,了解变革规律更好地拥抱新时代到来。 通过本课程 拓展一下思维,期待收获 拓展一下思维,期待收获 拓展一下思维,期待收获 拓展一下思维,期待收获 能多一些 。包含:机器 包含:机器 包含:机器 学习 、深度学习通信感知与行动等人工智能在 、深度学习通信感知与行动等人工智能在 、深度学习通信感知与行动等人工智能在 、深度学习通信感知与行动等人工智能在 、深度学习通信感知与行动等人工智能在 、深度学习通信感知与行动等人工智能在 、深度学习通信感知与行动等人工智能在 、深度学习通信感知与行动等人工智能在 、深度学习通信感知与行动等人工智能在 、深度学习通信感知与行动等人工智能在 各领域的应用知识。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值