- packagecom.sweetop.test;
- importjava.io.Serializable;
- importjava.util.Arrays;
- importjava.util.Vector;
- importorg.joone.engine.FullSynapse;
- importorg.joone.engine.LinearLayer;
- importorg.joone.engine.Monitor;
- importorg.joone.engine.NeuralNetEvent;
- importorg.joone.engine.NeuralNetListener;
- importorg.joone.engine.Pattern;
- importorg.joone.engine.SigmoidLayer;
- importorg.joone.engine.learning.TeachingSynapse;
- importorg.joone.io.FileInputSynapse;
- importorg.joone.io.FileOutputSynapse;
- importorg.joone.io.MemoryInputSynapse;
- importorg.joone.io.MemoryOutputSynapse;
- importorg.joone.net.NeuralNet;
- publicclassTestimplementsNeuralNetListener,Serializable{
- /**
- *
- */
- privatestaticfinallongserialVersionUID=61750666816215273L;
- privateNeuralNetnnet=null;
- privateMemoryInputSynapseinputSynapse,desiredOutputSynapse;
- privateMemoryOutputSynapseoutputSynapse;
- //XORinput
- privatedouble[][]inputArray=newdouble[][]{{1.0,1.0},
- {1.0,2.0},{2.0,2.0},{2.0,3.0},{1.0,3.0}};
- //XORdesiredoutput
- privatedouble[][]desiredOutputArray=newdouble[][]{{2.0/10},
- {3.0/10},{4.0/10},{5.0/10},{4.0/10}};
- protectedvoidinitNeuralNet(){
- //Firstcreatethethreelayers
- LinearLayerinput=newLinearLayer();
- SigmoidLayerhidden=newSigmoidLayer();
- SigmoidLayeroutput=newSigmoidLayer();
- input.setLayerName("input");
- hidden.setLayerName("hidden");
- output.setLayerName("output");
- //setthedimensionsofthelayers
- input.setRows(2);
- hidden.setRows(3);
- output.setRows(1);
- //NowcreatethetwoSynapses
- FullSynapsesynapse_IH=newFullSynapse();/*input->hiddenconn.*/
- FullSynapsesynapse_HO=newFullSynapse();/*hidden->outputconn.*/
- //Connecttheinputlayerwhitthehiddenlayer
- input.addOutputSynapse(synapse_IH);
- hidden.addInputSynapse(synapse_IH);
- //Connectthehiddenlayerwhittheoutputlayer
- hidden.addOutputSynapse(synapse_HO);
- output.addInputSynapse(synapse_HO);
- //theinputtotheneuralnet
- inputSynapse=newMemoryInputSynapse();
- input.addInputSynapse(inputSynapse);
- //theoutputoftheneuralnet
- outputSynapse=newMemoryOutputSynapse();
- output.addOutputSynapse(outputSynapse);
- //TheTraineranditsdesiredoutput
- desiredOutputSynapse=newMemoryInputSynapse();
- TeachingSynapsetrainer=newTeachingSynapse();
- trainer.setDesired(desiredOutputSynapse);
- nnet=newNeuralNet();
- nnet.addLayer(input,NeuralNet.INPUT_LAYER);
- nnet.addLayer(hidden,NeuralNet.HIDDEN_LAYER);
- nnet.addLayer(output,NeuralNet.OUTPUT_LAYER);
- nnet.setTeacher(trainer);
- output.addOutputSynapse(trainer);
- train();
- //File
- }
- publicvoidtest(double[][]d){
- inputSynapse.setInputArray(d);
- inputSynapse.setAdvancedColumnSelector("1,2");
- nnet.getMonitor().setTotCicles(1);
- nnet.start();
- nnet.getMonitor().Go();
- for(Objecto:outputSynapse.getAllPatterns()){
- Patternp=(Pattern)o;
- System.out.println(10*p.getArray()[0]);
- }
- }
- publicvoidtrain(){
- //settheinputs
- inputSynapse.setInputArray(inputArray);
- inputSynapse.setAdvancedColumnSelector("1,2");
- //setthedesiredoutputs
- desiredOutputSynapse.setInputArray(desiredOutputArray);
- desiredOutputSynapse.setAdvancedColumnSelector("1");
- //getthemonitorobjecttotrainorfeedforward
- Monitormonitor=nnet.getMonitor();
- //setthemonitorparameters
- monitor.setLearningRate(0.8);
- monitor.setMomentum(0.3);
- monitor.setTrainingPatterns(inputArray.length);
- monitor.setTotCicles(100000);
- monitor.setLearning(true);
- nnet.addNeuralNetListener(this);
- nnet.start();
- nnet.getMonitor().Go();
- for(Objecto:outputSynapse.getAllPatterns()){
- Patternp=(Pattern)o;
- System.out.println(10*p.getArray()[0]);
- }
- }
- publicvoidcicleTerminated(NeuralNetEvente){
- }
- publicvoiderrorChanged(NeuralNetEvente){
- }
- publicvoidnetStarted(NeuralNetEvente){
- //TODOAuto-generatedmethodstub
- }
- publicvoidnetStopped(NeuralNetEvente){
- //TODOAuto-generatedmethodstub
- }
- publicvoidnetStoppedError(NeuralNetEvente,Stringerror){
- }
- }
JOONE实现人工智能
最新推荐文章于 2019-02-16 11:54:00 发布