inputconnector.java

来自「一个纯java写的神经网络源代码」· Java 代码 · 共 136 行

JAVA
136
字号
/* * InputConnector.java * * Created on September 15, 2004, 2:34 PM */package org.joone.io;import java.util.*;import org.joone.engine.*;import org.joone.log.*;import org.joone.util.*;import org.joone.net.NetCheck;/** * * @author  drmarpao */public class InputConnector extends StreamInputSynapse implements PlugInListener {        /** Logger for this class. */    private static final ILogger log = LoggerFactory.getLogger(InputConnector.class);        private static final long serialVersionUID = -3316265583123866079L;        /** The input stream this connector is connected to. */    private StreamInputSynapse inputSynapse;        /** Creates a new instance of InputConnector */    public InputConnector() {        setBuffered(false);    }        protected void initInputStream() throws org.joone.exception.JooneRuntimeException {        currentRow = getFirstRow();        EOF = false;    }        /**     * Attach a <code>StreamInputSynapse</code> to this connector.     *     * @param input the <code>StreamInputSynapse</code> to attach. <code>null</code>     * to free this connector     */    public boolean setInputSynapse(StreamInputSynapse input) {        if (input != null) {            input.setMonitor(getMonitor());            input.setBuffered(true);            input.setStepCounter(false);            input.setInputFull(true);            input.addPlugInListener(this);            setOutputFull(true);        } else {            setOutputFull(false);            if (inputSynapse != null) {                inputSynapse.removePlugInListener(this);                inputSynapse.setInputFull(false);            }        }        inputSynapse = input;        return true;    }        protected Pattern getStream() {        if (inputSynapse == null)            return null;        Pattern patt = inputSynapse.fwdGet(this);        if (patt != null) {            if (cols == null)                setColList();            if (cols == null)                return null; // In this case we cannot continue                        inps = new double[cols.length];                        for (int x = 0; x < cols.length; ++x) {                inps[x] = patt.getArray()[cols[x] - 1];            }            // Calculates the new current line            // and check the EOF            ++currentRow;            if (currentRow - getFirstRow() > (getMonitor().getNumOfPatterns() - 1))                EOF = true;            if ((getLastRow() > 0) && (getCurrentRow() > getLastRow()))                EOF = true;            forward(inps);            Pattern newPattern = new Pattern(outs);            newPattern.setCount(getCurrentRow() - getFirstRow());            return newPattern;        } else            return null;    }        public void setMonitor(Monitor newMonitor) {        super.setMonitor(newMonitor);        if (inputSynapse != null)            inputSynapse.setMonitor(newMonitor);    }        public void dataChanged(PlugInEvent anEvent) {        // data has changed so by removing all elements (changed) data will be        // retrieved again from the underlying stream input        if (isBuffered()) {            getInputVector().removeAllElements();        }    }        public java.util.TreeSet check() {        TreeSet checks = super.check();        // Check that the first row is greater than 0.        if (inputSynapse == null) {            checks.add(new NetCheck(NetCheck.FATAL, "Input Synapse not set", this));        } else if (!inputSynapse.isBuffered()) {            checks.add(new NetCheck(NetCheck.FATAL, "The Input Synapse must be buffered", this));        }        return checks;    }        public void resetInput() {        if (inputSynapse != null) {            inputSynapse.resetInput();        }    }        /**     * Sets the current row.      * Note : this method is needed by the MultipleInputSynpase. I wonder if it is     * needed for any other purpose... So you probably don't need to use this method.     *     * @param aRow the new value for the current row.     */    protected void setCurrentRow(int aRow) {        currentRow = aRow;    }}

⌨️ 快捷键说明

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