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

📄 neuralnetvalidator.java

📁 一个纯java写的神经网络源代码
💻 JAVA
字号:
package org.joone.net;import java.util.Vector;import org.joone.engine.*;/** * This class is useful to validate a neural network. * It simply sets some parameters of the neural network passed as parameter * and starts itself in a separated thread, notifying a listener when the * validation step finishes. * * @author pmarrone */public class NeuralNetValidator implements Runnable, NeuralNetListener {        final private Vector listeners;        /** The network to validate. */    final private NeuralNet nnet;        private Thread myThread = null;    private int currentCycle;    private int totCycles;        /** Flag indicating if we should use the training data for validation (if     * <code>true</code>) or should we use the validation data (if <code>false</code>)     * which is the default. */    private boolean useTrainingData = false;        public NeuralNetValidator(NeuralNet nn) {        listeners = new Vector();        nnet = nn;    }        public synchronized void addValidationListener(NeuralValidationListener newListener){        if (!listeners.contains(newListener))            listeners.addElement(newListener);    }        protected void validate(){        totCycles = nnet.getMonitor().getTotCicles();        currentCycle = nnet.getMonitor().getCurrentCicle();        nnet.getMonitor().addNeuralNetListener(this);        nnet.getMonitor().setLearning(false);        nnet.getMonitor().setValidation(true);        nnet.getMonitor().setTrainingDataForValidation(useTrainingData);        nnet.getMonitor().setTotCicles(1);        nnet.go();    }        public void fireNetValidated(){        double error = nnet.getMonitor().getGlobalError();        nnet.getDescriptor().setValidationError(error);        Object[] list;        synchronized (this) {            list = listeners.toArray();        }        for (int i=0; i < list.length; ++i) {            NeuralValidationListener nvl = (NeuralValidationListener)list[i];            nvl.netValidated(new NeuralValidationEvent(nnet));        }    }        /**     * By default the validator validates a neural network with validation data,     * however by calling this method before calling the <code>start()</code>     * method, one can decide if the network should be validated with validation     * data (the parameter <code>anUse</code> should be <code>false</code>) or     * by using the training data (the parameter <code>anUse</code> should be      * <code>true</code>).     *     * @param anUse <code>true</code> if we should use training data for validation,     * <code>false</code> if we should use the validation data for validation (default).     */    public void useTrainingData(boolean anUse) {        useTrainingData = anUse;    }        /** Starts the validation into a separated thread     */    public void start() {        if (myThread == null) {            myThread = new Thread(this, "Validator");            myThread.start();        }    }        public void run() {        this.validate();        myThread = null;    }        public void netStopped(NeuralNetEvent e) {        this.fireNetValidated();    }        public void cicleTerminated(NeuralNetEvent e) {    }        public void netStarted(NeuralNetEvent e) {    }        public void errorChanged(NeuralNetEvent e) {    }        public void netStoppedError(NeuralNetEvent e, String error) {    }        /**     * Gets the network to validate (or has been validated).     *     * @return the netork to validate (or the network that has been validated).     */    public NeuralNet getNeuralNet() {        return nnet;    }}

⌨️ 快捷键说明

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