📄 nestedneurallayer.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 + -