⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xor_multipleinputs.java

📁 一个纯java写的神经网络源代码
💻 JAVA
字号:
/*--- formatted by Jindent 2.1, (www.c-lab.de/~jindent) ---*//* * JOONE - Java Object Oriented Neural Engine * http://joone.sourceforge.net * */package org.joone.samples.engine.multipleInputs;import java.io.File;import org.joone.engine.*;import org.joone.engine.learning.*;import org.joone.io.*;import org.joone.net.*;/** * Sample class to demostrate the use of the MultipleInputSynapse * * */public class XOR_multipleInputs implements NeuralNetListener {    private NeuralNet			nnet = null;    private FileInputSynapse inputSynapse1, inputSynapse2, inputSynapse3;    private FileInputSynapse desiredSynapse1, desiredSynapse2, desiredSynapse3;    //    private MemoryOutputSynapse outputSynapse;    private InputSwitchSynapse inputSw, desiredSw;        private static String inputFileName = "org/joone/samples/engine/multipleInputs/xor.txt";    /**     * @param args the command line arguments     */    public static void main(String args[]) {        XOR_multipleInputs xor = new XOR_multipleInputs();                xor.initNeuralNet();        xor.train();        xor.interrogate();    }        /**     * Method declaration     */    public void train() {                // get the monitor object to train or feed forward        Monitor monitor = nnet.getMonitor();                // set the monitor parameters        monitor.setLearningRate(0.8);        monitor.setMomentum(0.3);        monitor.setTrainingPatterns(9);        monitor.setTotCicles(2000);        monitor.setLearning(true);        nnet.addNeuralNetListener(this);        nnet.go(true);        System.out.println("Network stopped. Last RMSE="+nnet.getMonitor().getGlobalError());    }        private void interrogate() {        // neuralNet is an instance of NeuralNet        Monitor monitor=nnet.getMonitor();        monitor.setTotCicles(1);        monitor.setLearning(false);        FileOutputSynapse output=new FileOutputSynapse();        // set the output synapse to write the output of the net        output.setFileName("/tmp/xorOut.txt");        // inject the input and get the output        if(nnet!=null) {            nnet.addOutputSynapse(output);            System.out.println(nnet.check());            nnet.go(true);        }    }        /**     * Method declaration     */    protected void initNeuralNet() {                // First create the three layers        LinearLayer	input = new LinearLayer();        SigmoidLayer	hidden = new SigmoidLayer();        SigmoidLayer	output = new SigmoidLayer();                // set the dimensions of the layers        input.setRows(2);        hidden.setRows(3);        output.setRows(1);                input.setLayerName("inputLayer");        hidden.setLayerName("hiddenLayer");        output.setLayerName("outputLayer");                // Now create the two Synapses        FullSynapse synapse_IH = new FullSynapse();	/* input -> hidden conn. */        FullSynapse synapse_HO = new FullSynapse();	/* hidden -> output conn. */                // Connect the input layer whit the hidden layer        input.addOutputSynapse(synapse_IH);        hidden.addInputSynapse(synapse_IH);                // Connect the hidden layer whit the output layer        hidden.addOutputSynapse(synapse_HO);        output.addInputSynapse(synapse_HO);                // the input to the neural net        inputSynapse1 = new FileInputSynapse();        inputSynapse2 = new FileInputSynapse();        inputSynapse3 = new FileInputSynapse();                inputSynapse1.setInputFile(new File(inputFileName));        inputSynapse1.setName("input1");        inputSynapse1.setAdvancedColumnSelector("1-2");        inputSynapse1.setFirstRow(1);        inputSynapse1.setLastRow(4);                inputSynapse2.setInputFile(new File(inputFileName));        inputSynapse2.setName("input2");        inputSynapse2.setAdvancedColumnSelector("1-2");        inputSynapse2.setFirstRow(2);        inputSynapse2.setLastRow(4);                inputSynapse3.setInputFile(new File(inputFileName));        inputSynapse3.setName("input3");        inputSynapse3.setAdvancedColumnSelector("1-2");        inputSynapse3.setFirstRow(3);        inputSynapse3.setLastRow(4);                inputSw = new MultipleInputSynapse();        inputSw.addInputSynapse(inputSynapse1);        inputSw.addInputSynapse(inputSynapse2);        inputSw.addInputSynapse(inputSynapse3);                input.addInputSynapse(inputSw);                // The Trainer and its desired output        desiredSynapse1 = new FileInputSynapse();        desiredSynapse2 = new FileInputSynapse();        desiredSynapse3 = new FileInputSynapse();                desiredSynapse1.setInputFile(new File(inputFileName));        desiredSynapse1.setName("desired1");        desiredSynapse1.setAdvancedColumnSelector("3");        desiredSynapse1.setFirstRow(1);        desiredSynapse1.setLastRow(4);                desiredSynapse2.setInputFile(new File(inputFileName));        desiredSynapse2.setName("desired2");        desiredSynapse2.setAdvancedColumnSelector("3");        desiredSynapse2.setFirstRow(2);        desiredSynapse2.setLastRow(4);                desiredSynapse3.setInputFile(new File(inputFileName));        desiredSynapse3.setName("desired3");        desiredSynapse3.setAdvancedColumnSelector("3");        desiredSynapse3.setFirstRow(3);        desiredSynapse3.setLastRow(4);                desiredSw = new MultipleInputSynapse();        desiredSw.addInputSynapse(desiredSynapse1);        desiredSw.addInputSynapse(desiredSynapse2);        desiredSw.addInputSynapse(desiredSynapse3);                TeachingSynapse trainer = new TeachingSynapse();        trainer.setDesired(desiredSw);                // Now we add this structure to a NeuralNet object        nnet = new NeuralNet();                nnet.addLayer(input, NeuralNet.INPUT_LAYER);        nnet.addLayer(hidden, NeuralNet.HIDDEN_LAYER);        nnet.addLayer(output, NeuralNet.OUTPUT_LAYER);        nnet.setTeacher(trainer);        output.addOutputSynapse(trainer);    }        public void cicleTerminated(NeuralNetEvent e) {    }        public void errorChanged(NeuralNetEvent e) {        Monitor mon = (Monitor)e.getSource();        if (mon.getCurrentCicle() % 100 == 0)            System.out.println("Epoch: "+(mon.getTotCicles()-mon.getCurrentCicle())+" RMSE:"+mon.getGlobalError());    }        public void netStarted(NeuralNetEvent e) {        Monitor mon = (Monitor)e.getSource();        if (mon.isLearning())            System.out.println("Training...");    }        public void netStopped(NeuralNetEvent e) {        System.out.println("Stopped");    }        public void netStoppedError(NeuralNetEvent e, String error) {    }    }/*--- formatting done in "JMRA based on Sun Java Convention" style on 05-25-2002 ---*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -