Esempio n. 1
0
 //Constructor
 /// <summary>
 /// Instantiates an uninitialized instance
 /// </summary>
 public StateMachineDesigner(InputEncoderSettings inputCfg, ReadoutLayerSettings readoutCfg)
 {
     InputCfg   = inputCfg ?? throw new ArgumentNullException("inputCfg");
     ReadoutCfg = readoutCfg ?? throw new ArgumentNullException("readoutCfg");
     _rand      = new Random(0);
     return;
 }
Esempio n. 2
0
 /// <summary>
 /// Checks consistency of this reservoir instance configuration and given
 /// preprocessor's input and reservoir structure configuration
 /// </summary>
 /// <param name="inputCfg">Preprocessor's input configuration</param>
 /// <param name="reservoirStructureCfg">Reservoir structure configuration</param>
 public void CheckConsistency(InputEncoderSettings inputCfg, ReservoirStructureSettings reservoirStructureCfg)
 {
     if (StructureCfgName != reservoirStructureCfg.Name)
     {
         throw new InvalidOperationException($"Name of the reservoir structure configuration {StructureCfgName} is not equal to name of given reservoir structure configuration name {reservoirStructureCfg.Name}.");
     }
     foreach (InputConnSettings inputConnCfg in InputConnsCfg.ConnCfgCollection)
     {
         inputCfg.VaryingFieldsCfg.GetFieldID(inputConnCfg.InputFieldName, true);
         reservoirStructureCfg.PoolsCfg.GetPoolID(inputConnCfg.PoolName);
     }
     return;
 }
Esempio n. 3
0
 /// <summary>
 /// Performs an additional consistency check.
 /// </summary>
 /// <param name="inputCfg">The configuration of the input encoder.</param>
 /// <param name="reservoirStructureCfg">The configuration of the reservoir structure.</param>
 public void CheckConsistency(InputEncoderSettings inputCfg, ReservoirStructureSettings reservoirStructureCfg)
 {
     if (StructureCfgName != reservoirStructureCfg.Name)
     {
         throw new ArgumentException($"The specified name of the reservoir structure configuration {StructureCfgName} does not correspond.", "StructureCfgName");
     }
     foreach (InputConnSettings inputConnCfg in InputConnsCfg.ConnCfgCollection)
     {
         inputCfg.VaryingFieldsCfg.GetFieldID(inputConnCfg.InputFieldName, true);
         reservoirStructureCfg.PoolsCfg.GetPoolID(inputConnCfg.PoolName);
     }
     return;
 }
Esempio n. 4
0
        /// <summary>
        /// Creates an initialized instance.
        /// </summary>
        /// <param name="elem">A xml element containing the configuration data.</param>
        public NeuralPreprocessorSettings(XElement elem)
        {
            //Validation
            XElement settingsElem = Validate(elem, XsdTypeName);

            //Parsing
            InputEncoderCfg          = new InputEncoderSettings(settingsElem.Elements("inputEncoder").First());
            ReservoirStructuresCfg   = new ReservoirStructuresSettings(settingsElem.Elements("reservoirStructures").First());
            ReservoirInstancesCfg    = new ReservoirInstancesSettings(settingsElem.Elements("reservoirInstances").First());
            PredictorsReductionRatio = double.Parse(settingsElem.Attribute("predictorsReductionRatio").Value, CultureInfo.InvariantCulture);
            PredictorValueMinSpan    = double.Parse(settingsElem.Attribute("predictorValueMinSpan").Value, CultureInfo.InvariantCulture);
            Check();
            return;
        }
Esempio n. 5
0
        /// <summary>
        /// Runs the example code.
        /// </summary>
        public void Run()
        {
            //Create StateMachine configuration
            //Simplified input configuration
            InputEncoderSettings inputCfg = StateMachineDesigner.CreateInputCfg(new FeedingContinuousSettings(FeedingContinuousSettings.AutoBootCyclesNum),
                                                                                true,
                                                                                new ExternalFieldSettings("High", new RealFeatureFilterSettings()),
                                                                                new ExternalFieldSettings("Low", new RealFeatureFilterSettings()),
                                                                                new ExternalFieldSettings("Adj Close", new RealFeatureFilterSettings())
                                                                                );
            //Simplified readout layer configuration
            ReadoutLayerSettings readoutCfg = StateMachineDesigner.CreateForecastReadoutCfg(StateMachineDesigner.CreateSingleLayerRegrNet(new IdentitySettings(), 2, 1000),
                                                                                            0.1d,
                                                                                            1,
                                                                                            "High",
                                                                                            "Low"
                                                                                            );
            //Create designer instance
            StateMachineDesigner smd = new StateMachineDesigner(inputCfg, readoutCfg);
            //Create pure ESN fashioned StateMachine configuration
            StateMachineSettings stateMachineCfg = smd.CreatePureESNCfg(250, 1, 0, 0.2d, 0, 0.1d, 0.75d, null, PredictorsProvider.PredictorID.Activation, PredictorsProvider.PredictorID.ActivationSquare);
            //Display StateMachine xml configuration
            string xmlConfig = stateMachineCfg.GetXml(true).ToString();

            _log.Write("StateMachine configuration xml:");
            _log.Write("-------------------------------");
            _log.Write(xmlConfig);
            _log.Write(string.Empty);
            _log.Write("Pres Enter to continue (StateMachine training)...");
            _log.Write(string.Empty);
            Console.ReadLine();

            //Instantiation and training
            _log.Write("StateMachine training:");
            _log.Write("----------------------");
            _log.Write(string.Empty);
            //StateMachine instance
            StateMachine stateMachine = new StateMachine(stateMachineCfg);

            //StateMachine training
            TrainStateMachine(stateMachine, ".\\Data\\TTOO.csv", out double[] predictionInputVector);

            //Forecast
            ReadoutLayer.ReadoutData readoutData = stateMachine.ComputeReadoutData(predictionInputVector);
            _log.Write("    Forecast next High and Low (real values are High=6.58$ and Low=5.99$):", false);
            _log.Write(stateMachine.RL.GetForecastReport(readoutData.DataVector, 6));
            _log.Write(string.Empty);

            return;
        }
Esempio n. 6
0
 //Constructors
 /// <summary>
 /// Creates an initialized instance.
 /// </summary>
 /// <param name="inputEncoderCfg">The configuration of the input encoder.</param>
 /// <param name="reservoirStructuresCfg">The configuration of the reservoir structures.</param>
 /// <param name="reservoirInstancesCfg">The configuration of the reservoir instances.</param>
 /// <param name="predictorsReductionRatio">Determines how many predictors having smallest value-span to be disabled.</param>
 /// <param name="predictorValueMinSpan">Specifies the minimum acceptable predictor's value-span.</param>
 public NeuralPreprocessorSettings(InputEncoderSettings inputEncoderCfg,
                                   ReservoirStructuresSettings reservoirStructuresCfg,
                                   ReservoirInstancesSettings reservoirInstancesCfg,
                                   double predictorsReductionRatio = DefaultPredictorsReductionRatio,
                                   double predictorValueMinSpan    = DefaultPredictorValueMinSpan
                                   )
 {
     InputEncoderCfg          = (InputEncoderSettings)inputEncoderCfg.DeepClone();
     ReservoirStructuresCfg   = (ReservoirStructuresSettings)reservoirStructuresCfg.DeepClone();
     ReservoirInstancesCfg    = (ReservoirInstancesSettings)reservoirInstancesCfg.DeepClone();
     PredictorsReductionRatio = predictorsReductionRatio;
     PredictorValueMinSpan    = predictorValueMinSpan;
     Check();
     return;
 }
Esempio n. 7
0
        /// <summary>
        /// Creates the neural preprocessor configuration.
        /// </summary>
        /// <param name="resInstName">The reservoir instance name.</param>
        /// <param name="resStructName">The reservoir structure configuration name.</param>
        /// <param name="pool1Name">The name of the pool1.</param>
        /// <param name="pool2Name">The name of the pool2.</param>
        NeuralPreprocessorSettings CreatePreprocessorCfg(string resInstName, string resStructName, string pool1Name, string pool2Name)
        {
            //Create input configuration
            InputEncoderSettings inputCfg = CreateInputCfg();
            //Create reservoir structure configuration
            ReservoirStructureSettings resStructCfg = CreateResStructCfg(resStructName, pool1Name, pool2Name);
            //Create reservoir instance configuration
            ReservoirInstanceSettings resInstCfg = CreateResInstCfg(resInstName, resStructName, pool1Name, pool2Name, 0, 1);
            //Create reservoir preprocessor configuration
            NeuralPreprocessorSettings preprocessorCfg = new NeuralPreprocessorSettings(inputCfg,
                                                                                        new ReservoirStructuresSettings(resStructCfg),
                                                                                        new ReservoirInstancesSettings(resInstCfg),
                                                                                        NeuralPreprocessorSettings.DefaultPredictorsReductionRatio
                                                                                        );

            return(preprocessorCfg);
        }
        /// <summary>
        /// Runs the example code.
        /// </summary>
        public void Run()
        {
            //Create StateMachine configuration
            //Simplified input configuration
            InputEncoderSettings inputCfg = StateMachineDesigner.CreateInputCfg(new FeedingPatternedSettings(1, true, RCNet.Neural.Data.InputPattern.VariablesSchema.Groupped),
                                                                                false,
                                                                                new ExternalFieldSettings("coord_abcissa", new RealFeatureFilterSettings()),
                                                                                new ExternalFieldSettings("coord_ordinate", new RealFeatureFilterSettings())
                                                                                );
            //Simplified readout layer configuration
            ReadoutLayerSettings readoutCfg = StateMachineDesigner.CreateClassificationReadoutCfg(StateMachineDesigner.CreateSingleLayerRegrNet(new IdentitySettings(), 5, 400),
                                                                                                  0.0825d,
                                                                                                  1,
                                                                                                  "Hand movement",
                                                                                                  "curved swing",
                                                                                                  "horizontal swing",
                                                                                                  "vertical swing",
                                                                                                  "anti-clockwise arc",
                                                                                                  "clockwise arc",
                                                                                                  "circle",
                                                                                                  "horizontal straight-line",
                                                                                                  "vertical straight-line",
                                                                                                  "horizontal zigzag",
                                                                                                  "vertical zigzag",
                                                                                                  "horizontal wavy",
                                                                                                  "vertical wavy",
                                                                                                  "face-up curve",
                                                                                                  "face-down curve",
                                                                                                  "tremble"
                                                                                                  );
            //Create designer instance
            StateMachineDesigner smd = new StateMachineDesigner(inputCfg, readoutCfg);
            //Create pure ESN fashioned StateMachine configuration
            StateMachineSettings stateMachineCfg = smd.CreatePureESNCfg(150,
                                                                        0.25d,
                                                                        5,
                                                                        0.1d,
                                                                        0,
                                                                        0,
                                                                        0,
                                                                        null,
                                                                        PredictorsProvider.PredictorID.FiringCount
                                                                        );
            //Display StateMachine xml configuration
            string xmlConfig = stateMachineCfg.GetXml(true).ToString();

            _log.Write("StateMachine configuration xml:");
            _log.Write("-------------------------------");
            _log.Write(xmlConfig);
            _log.Write(string.Empty);
            _log.Write("Pres Enter to continue (StateMachine training and verification)...");
            _log.Write(string.Empty);
            Console.ReadLine();

            //Instantiation and training
            _log.Write("StateMachine training:");
            _log.Write("----------------------");
            _log.Write(string.Empty);
            //StateMachine instance
            StateMachine stateMachine = new StateMachine(stateMachineCfg);

            //StateMachine training
            TrainStateMachine(stateMachine, ".\\Data\\LibrasMovement_train.csv", out _);
            _log.Write(string.Empty);
            //StateMachine verification
            _log.Write("StateMachine verification:");
            _log.Write("--------------------------");
            _log.Write(string.Empty);
            VerifyStateMachine(stateMachine, ".\\Data\\LibrasMovement_verify.csv", null, out _);
            _log.Write(string.Empty);

            return;
        }
Esempio n. 9
0
        //Methods
        /// <summary>
        /// Runs the example code.
        /// </summary>
        public void Run()
        {
            //Create StateMachine configuration
            //Simplified input configuration
            InputEncoderSettings inputCfg = StateMachineDesigner.CreateInputCfg(new FeedingContinuousSettings(FeedingContinuousSettings.AutoBootCyclesNum),
                                                                                new InputSpikesCoderSettings(),
                                                                                true,
                                                                                new ExternalFieldSettings("High", new RealFeatureFilterSettings()),
                                                                                new ExternalFieldSettings("Low", new RealFeatureFilterSettings()),
                                                                                new ExternalFieldSettings("Adj Close", new RealFeatureFilterSettings())
                                                                                );
            //Simplified readout layer configuration
            ReadoutLayerSettings readoutCfg = StateMachineDesigner.CreateForecastReadoutCfg(new CrossvalidationSettings(0.1d, 0, 1),
                                                                                            StateMachineDesigner.CreateSingleLayerFFNetCfg(new AFAnalogIdentitySettings(), 2, 1000),
                                                                                            1,
                                                                                            "High",
                                                                                            "Low"
                                                                                            );
            //Create designer instance
            StateMachineDesigner smd = new StateMachineDesigner(inputCfg, readoutCfg);
            //Create pure ESN fashioned StateMachine configuration
            StateMachineSettings stateMachineCfg = smd.CreatePureESNCfg(250,  //Total size of the reservoir (number of hidden neurons within the reservoir).
                                                                        2.5,  //Maximum stimulation strength through hidden neuron's input synapses.
                                                                        1d,   //Connection density of an input field. 1 means that each input field will be synaptically connected to all neurons.
                                                                        0,    //Maximum delay on an input synapse. 0 means no delay.
                                                                        0.1d, //Interconnection density. 0.1 means that each hidden neuron will be synaptically internally connected to 10% of other hidden neurons.
                                                                        0,    //Maximum delay on an internal synapse. 0 means no delay.
                                                                        0d,   //Maximum absolute value of the hidden neuron bias. 0 means no bias.
                                                                        0d,   //Maximum retainment on an hidden neuron. 0 means no retainment.
                                                                        new PredictorsProviderSettings(new PredictorActivationSettings(),
                                                                                                       new PredictorActivationPowerSettings(2d, true),
                                                                                                       new PredictorFiringTraceSettings(0.05, 30)
                                                                                                       )
                                                                        );
            //Display StateMachine xml configuration
            string xmlConfig = stateMachineCfg.GetXml(true).ToString();

            _log.Write("StateMachine configuration xml:");
            _log.Write("-------------------------------");
            _log.Write(xmlConfig);
            _log.Write(string.Empty);
            _log.Write("Press Enter to continue (StateMachine training)...");
            _log.Write(string.Empty);
            Console.ReadLine();

            //Instantiation and training
            _log.Write("StateMachine training:");
            _log.Write("----------------------");
            _log.Write(string.Empty);
            //StateMachine instance
            StateMachine stateMachine = new StateMachine(stateMachineCfg);

            //StateMachine training
            TrainStateMachine(stateMachine, "./Data/TTOO.csv", out double[] predictionInputVector);

            //Forecasting
            double[] outputVector = stateMachine.Compute(predictionInputVector, out ReadoutLayer.ReadoutData readoutData);
            _log.Write("    Forecasted next High and Low TTOO prices (real prices were High = 3.61$ and Low=3.10$):", false);
            _log.Write(stateMachine.RL.GetForecastReport(readoutData.NatDataVector, 6));
            _log.Write(string.Empty);

            return;
        }
Esempio n. 10
0
        //Methods
        /// <summary>
        /// Runs the example code.
        /// </summary>
        public void Run()
        {
            //Create StateMachine configuration
            //Simplified input configuration
            InputEncoderSettings inputCfg = StateMachineDesigner.CreateInputCfg(new FeedingPatternedSettings(1, NeuralPreprocessor.BidirProcessing.WithReset, RCNet.Neural.Data.InputPattern.VariablesSchema.Groupped),
                                                                                new InputSpikesCoderSettings(),
                                                                                false,
                                                                                new ExternalFieldSettings("coord_abcissa", new RealFeatureFilterSettings()),
                                                                                new ExternalFieldSettings("coord_ordinate", new RealFeatureFilterSettings())
                                                                                );
            //Simplified readout layer configuration
            ReadoutLayerSettings readoutCfg = StateMachineDesigner.CreateClassificationReadoutCfg(new CrossvalidationSettings(0.0825d, CrossvalidationSettings.AutoFolds, 1),
                                                                                                  StateMachineDesigner.CreateSingleLayerFFNetCfg(new AFAnalogIdentitySettings(), 5, 400),
                                                                                                  1,
                                                                                                  "Hand movement",
                                                                                                  "curved swing",
                                                                                                  "horizontal swing",
                                                                                                  "vertical swing",
                                                                                                  "anti-clockwise arc",
                                                                                                  "clockwise arc",
                                                                                                  "circle",
                                                                                                  "horizontal straight-line",
                                                                                                  "vertical straight-line",
                                                                                                  "horizontal zigzag",
                                                                                                  "vertical zigzag",
                                                                                                  "horizontal wavy",
                                                                                                  "vertical wavy",
                                                                                                  "face-up curve",
                                                                                                  "face-down curve",
                                                                                                  "tremble"
                                                                                                  );
            //Create designer instance
            StateMachineDesigner smd = new StateMachineDesigner(inputCfg, readoutCfg);
            //Create pure ESN fashioned StateMachine configuration
            StateMachineSettings stateMachineCfg = smd.CreatePureESNCfg(150,                                                //Size
                                                                        StateMachineDesigner.DefaultAnalogMaxInputStrength, //Max input strength
                                                                        0.25d,                                              //Input connection density
                                                                        5,                                                  //Max input delay
                                                                        0.1d,                                               //Interconnection density
                                                                        0,                                                  //Max internal delay
                                                                        0,                                                  //Max absolute value of bias
                                                                        0,                                                  //Max retainment strength
                                                                        new PredictorsProviderSettings(new PredictorFiringTraceSettings(0.05, 45))
                                                                        );
            //Display StateMachine xml configuration
            string xmlConfig = stateMachineCfg.GetXml(true).ToString();

            _log.Write("StateMachine configuration xml:");
            _log.Write("-------------------------------");
            _log.Write(xmlConfig);
            _log.Write(string.Empty);
            _log.Write("Press Enter to continue (StateMachine training and verification)...");
            _log.Write(string.Empty);
            Console.ReadLine();

            //Instantiation and training
            _log.Write("StateMachine training:");
            _log.Write("----------------------");
            _log.Write(string.Empty);
            //StateMachine instance
            StateMachine stateMachine = new StateMachine(stateMachineCfg);

            //StateMachine training
            TrainStateMachine(stateMachine, "./Data/LibrasMovement_train.csv", out _);
            _log.Write(string.Empty);
            //StateMachine verification
            _log.Write("StateMachine verification:");
            _log.Write("--------------------------");
            _log.Write(string.Empty);
            VerifyStateMachine(stateMachine, "./Data/LibrasMovement_verify.csv", null, out _);
            _log.Write(string.Empty);

            return;
        }
Esempio n. 11
0
        /// <summary>
        /// Runs the example code.
        /// </summary>
        public void Run()
        {
            //Create StateMachine configuration
            //Simplified input configuration
            InputEncoderSettings inputCfg = StateMachineDesigner.CreateInputCfg(new FeedingPatternedSettings(1, true, RCNet.Neural.Data.InputPattern.VariablesSchema.Groupped),
                                                                                false,
                                                                                new ExternalFieldSettings("coord_abcissa", new RealFeatureFilterSettings(), true, new SpikeCodeSettings(15, 1e-3, true, true, true, false)),
                                                                                new ExternalFieldSettings("coord_ordinate", new RealFeatureFilterSettings(), true, new SpikeCodeSettings(15, 1e-3, true, true, true, false))
                                                                                );
            //Simplified readout layer configuration
            ReadoutLayerSettings readoutCfg = StateMachineDesigner.CreateClassificationReadoutCfg(StateMachineDesigner.CreateSingleLayerRegrNet(new ElliotSettings(), 5, 400),
                                                                                                  0.0825d,
                                                                                                  1,
                                                                                                  "Hand movement",
                                                                                                  "curved swing",
                                                                                                  "horizontal swing",
                                                                                                  "vertical swing",
                                                                                                  "anti-clockwise arc",
                                                                                                  "clockwise arc",
                                                                                                  "circle",
                                                                                                  "horizontal straight-line",
                                                                                                  "vertical straight-line",
                                                                                                  "horizontal zigzag",
                                                                                                  "vertical zigzag",
                                                                                                  "horizontal wavy",
                                                                                                  "vertical wavy",
                                                                                                  "face-up curve",
                                                                                                  "face-down curve",
                                                                                                  "tremble"
                                                                                                  );
            //Create designer instance
            StateMachineDesigner smd = new StateMachineDesigner(inputCfg, readoutCfg);
            //Create pure LSM fashioned StateMachine configuration
            StateMachineSettings stateMachineCfg = smd.CreatePureLSMCfg(new ProportionsSettings(60, 1, 1), //Proportions (it also determines total size)
                                                                        new AdExpIFSettings(),             //Activation
                                                                                                           //new ExpIFSettings(null, null, null, null, null, null, null, 0), //Activation
                                                                        new HomogenousExcitabilitySettings(0.75, 0.75, 0.25),
                                                                        1d,                                //Input connection density
                                                                        0,                                 //Input max delay
                                                                        0.1d,                              //Interconnection density
                                                                        0,                                 //Internal synapses max delay
                                                                        0,                                 //Steady bias
                                                                        null,
                                                                        PredictorsProvider.PredictorID.FiringFadingSum
                                                                        );

            //Display StateMachine xml configuration
            string xmlConfig = stateMachineCfg.GetXml(true).ToString();

            _log.Write("StateMachine configuration xml:");
            _log.Write("-------------------------------");
            _log.Write(xmlConfig);
            _log.Write(string.Empty);
            _log.Write("Pres Enter to continue (StateMachine training and verification)...");
            _log.Write(string.Empty);
            Console.ReadLine();

            //Instantiation and training
            _log.Write("StateMachine training:");
            _log.Write("----------------------");
            _log.Write(string.Empty);
            //StateMachine instance
            StateMachine stateMachine = new StateMachine(stateMachineCfg);

            //StateMachine training
            TrainStateMachine(stateMachine, ".\\Data\\LibrasMovement_train.csv", out _);
            _log.Write(string.Empty);
            //StateMachine verification
            _log.Write("StateMachine verification:");
            _log.Write("--------------------------");
            _log.Write(string.Empty);
            VerifyStateMachine(stateMachine, ".\\Data\\LibrasMovement_verify.csv", null, out _);
            _log.Write(string.Empty);

            return;
        }