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

📄 nestedneurallayer.java

📁 一个纯java写的神经网络源代码
💻 JAVA
字号:
/* * NestedNeuralLayer.java * * Created on 29 February 2002 */package org.joone.net;import java.io.*;import java.util.*;import org.joone.io.StreamInputSynapse;import org.joone.io.StreamOutputSynapse;import org.joone.log.*;import org.joone.engine.*;public class NestedNeuralLayer extends Layer {    /**     * Logger     * */    private static final ILogger log = LoggerFactory.getLogger(NestedNeuralLayer.class);        static final long serialVersionUID = -3697306754884303651L;    private String sNeuralNet;	// The file name for the stored NeuralNet    private NeuralNet NestedNeuralNet;    private LinearLayer lin;    private transient File embeddedNet = null;        public NestedNeuralLayer() {        this("");    }        public NestedNeuralLayer(String ElemName) {        super();        NestedNeuralNet = new NeuralNet();        /* We add a dummy layer to store the connections made before the true NestedNN is set         * so the NestedNeuralLayer acts as a LinearLayer in absence of an internal NN         */        lin = new LinearLayer();        lin.setLayerName("Nested LinearLayer");        NestedNeuralNet.addLayer(lin, NeuralNet.INPUT_LAYER);        sNeuralNet = new String();        setLayerName(ElemName);    }        protected void setDimensions() {            }        protected void forward(double[] pattern) {            }        protected void backward(double[] pattern) {            }        public String getNeuralNet() {        return sNeuralNet;    }        public void setNeuralNet(String NNFile) {        sNeuralNet = NNFile;        try {            NeuralNet newNeuralNet = readNeuralNet();            if (newNeuralNet != null)                this.setNestedNeuralNet(newNeuralNet);        } catch (Exception e) {            log.warn( "Exception thrown. Message is : " + e.getMessage(),                    e );        }    }        public void start() {        NestedNeuralNet.start();    }        public void stop() {        NestedNeuralNet.stop();    }        public int getRows() {        return NestedNeuralNet.getRows();    }        public void setRows(int p1) {        NestedNeuralNet.setRows(p1);    }        public void addNoise(double p1) {        if (this.isLearning())            NestedNeuralNet.addNoise(p1);    }        public void randomize(double amplitude) {        if (this.isLearning())            NestedNeuralNet.randomize(amplitude);    }        public Matrix getBias() {        return NestedNeuralNet.getBias();    }        public Vector getAllOutputs() {        return NestedNeuralNet.getAllOutputs();    }        public String getLayerName() {        return NestedNeuralNet.getLayerName();    }        public void removeOutputSynapse(OutputPatternListener p1) {        NestedNeuralNet.removeOutputSynapse(p1);    }        public void setAllInputs(Vector p1) {        NestedNeuralNet.setAllInputs(p1);    }        public void removeAllOutputs() {        NestedNeuralNet.removeAllOutputs();    }        public Vector getAllInputs() {        return NestedNeuralNet.getAllInputs();    }        public boolean addOutputSynapse(OutputPatternListener p1) {        return NestedNeuralNet.addOutputSynapse(p1);    }        public void setBias(Matrix p1) {        NestedNeuralNet.setBias(p1);    }        public void removeInputSynapse(InputPatternListener p1) {        NestedNeuralNet.removeInputSynapse(p1);    }        public void setLayerName(String p1) {        NestedNeuralNet.setLayerName(p1);    }        public boolean addInputSynapse(InputPatternListener p1) {        return NestedNeuralNet.addInputSynapse(p1);    }        public void setAllOutputs(Vector p1) {        NestedNeuralNet.setAllOutputs(p1);    }        public void setMonitor(Monitor p1) {        getMonitor().setParent(p1);    }        public Monitor getMonitor() {        return NestedNeuralNet.getMonitor();    }        public void removeAllInputs() {        NestedNeuralNet.removeAllInputs();    }        public NeuralLayer copyInto(NeuralLayer p1) {        return NestedNeuralNet.copyInto(p1);    }        /**     * Reads the object of NeuralNet from the file with name NeuralNet     */    private NeuralNet readNeuralNet() throws IOException, ClassNotFoundException {                if (sNeuralNet == null)            return null;        if (sNeuralNet.equals(new String("")))            return null;                File NNFile = new File(sNeuralNet);        FileInputStream fin = new FileInputStream(NNFile);        ObjectInputStream oin = new ObjectInputStream(fin);                NeuralNet newNeuralNet = (NeuralNet)oin.readObject();        oin.close();        fin.close();        return newNeuralNet;    }        public boolean isRunning() {        if (NestedNeuralNet == null)            return false;        else            return NestedNeuralNet.isRunning();    }        /** Getter for property NestedNeuralNet.     * @return Value of property NestedNeuralNet.     *     */    public NeuralNet getNestedNeuralNet() {        return NestedNeuralNet;    }        /** Setter for property NestedNeuralNet.     * @param NestedNeuralNet New value of property NestedNeuralNet.     *     */    public void setNestedNeuralNet(NeuralNet newNeuralNet) {        newNeuralNet.removeAllListeners();        newNeuralNet.setLayerName(NestedNeuralNet.getLayerName());        newNeuralNet.setTeacher(null); // The nested NN cannot have a own teacher        newNeuralNet.setAllInputs(NestedNeuralNet.getAllInputs());        newNeuralNet.setAllOutputs(NestedNeuralNet.getAllOutputs());        Monitor extMonitor = getMonitor();        lin = null;        NestedNeuralNet = newNeuralNet;        NestedNeuralNet.setMonitor(new Monitor());        this.setMonitor(extMonitor);    }        /** Getter for property learning.     * @return Value of property learning.     *     */    public boolean isLearning() {        return NestedNeuralNet.getMonitor().isLearning();    }        /** Setter for property learning.     * @param learning New value of property learning.     *     */    public void setLearning(boolean learning) {        NestedNeuralNet.getMonitor().setLearning(learning);    }        public TreeSet check() {        return setErrorSource(NestedNeuralNet.check());    }        public File getEmbeddedNet() {        return embeddedNet;    }        public void setEmbeddedNet(File embeddedNet) {        if (embeddedNet != null) {            if (!sNeuralNet.equals(embeddedNet.getAbsolutePath())) {                this.embeddedNet = embeddedNet;                setNeuralNet(embeddedNet.getAbsolutePath());            }        } else {            this.embeddedNet = embeddedNet;            sNeuralNet = "";        }    }        private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {        in.defaultReadObject();        this.embeddedNet = new File(sNeuralNet);    }        // Changes the source of the errors generated from internal components    private TreeSet setErrorSource(TreeSet errors) {        if (!errors.isEmpty()) {            Iterator iter = errors.iterator();            while (iter.hasNext()) {                NetCheck nc = (NetCheck)iter.next();                if (!(nc.getSource() instanceof Monitor) &&                        !(nc.getSource() instanceof StreamInputSynapse) &&                        !(nc.getSource() instanceof StreamOutputSynapse))                    nc.setSource(this);            }        }        return errors;    }        public void fwdRun(Pattern pattIn) {        NestedNeuralNet.singleStepForward(pattIn);    }        public void revRun(Pattern pattIn) {        NestedNeuralNet.singleStepBackward(pattIn);    }}

⌨️ 快捷键说明

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