Example #1
0
 //Constructors
 /// <summary>
 /// Creates an initialized instance
 /// </summary>
 /// <param name="featureFilterCfg">Output feature filter settings</param>
 /// <param name="networksCfg">Forecasting networks settings</param>
 public ForecastTaskSettings(IFeatureFilterSettings featureFilterCfg,
                             ForecastNetworksSettings networksCfg = null
                             )
 {
     FeatureFilterCfg = (IFeatureFilterSettings)featureFilterCfg.DeepClone();
     NetworksCfg      = networksCfg == null ? new ForecastNetworksSettings() : (ForecastNetworksSettings)networksCfg.DeepClone();
     return;
 }
Example #2
0
 //Constructors
 /// <summary>
 /// Creates an unitialized instance
 /// </summary>
 /// <param name="name">The name of the input field.</param>
 /// <param name="featureFilterCfg">The configuration of the feature filter associated with the input field.</param>
 /// <param name="routeToReadout">Specifies whether to route the input field to the readout layer.</param>
 public ExternalFieldSettings(string name,
                              IFeatureFilterSettings featureFilterCfg,
                              bool routeToReadout = DefaultRouteToReadout
                              )
 {
     Name             = name;
     FeatureFilterCfg = (IFeatureFilterSettings)featureFilterCfg.DeepClone();
     RouteToReadout   = routeToReadout;
     Check();
     return;
 }
Example #3
0
        /// <summary>
        /// Instantiates the appropriate feature filter.
        /// </summary>
        /// <param name="outputRange">The output range of the feature filter.</param>
        /// <param name="cfg">The feature filter configuration.</param>
        public static FeatureFilterBase Create(Interval outputRange, IFeatureFilterSettings cfg)
        {
            switch (cfg.Type)
            {
            case FeatureFilterBase.FeatureType.Binary:
                return(new BinFeatureFilter(outputRange, (BinFeatureFilterSettings)cfg));

            case FeatureFilterBase.FeatureType.Real:
                return(new RealFeatureFilter(outputRange, (RealFeatureFilterSettings)cfg));

            default:
                throw new ArgumentException($"Unexpected feature type {cfg.Type}", "settings");
            }
        }
Example #4
0
        //Constructor
        /// <summary>
        /// Creates an initialized instance.
        /// </summary>
        /// <param name="name">The name of the input field.</param>
        /// <param name="idx">The zero-based index of the input field among other input fields.</param>
        /// <param name="coordinates">The coordinates of input neurons in 3D space.</param>
        /// <param name="dataWorkingRange">The output range of the input data.</param>
        /// <param name="featureFilterCfg">The configuration of the feature filter.</param>
        /// <param name="spikesEncodingCfg">The configuration of the spikes coder.</param>
        /// <param name="routeToReadout">Specifies whether to route the input field values to readout layer.</param>
        /// <param name="inputNeuronsStartIdx">The zero-based index of the first input neuron of this field among all other input neurons.</param>
        public InputField(string name,
                          int idx,
                          int[] coordinates,
                          Interval dataWorkingRange,
                          IFeatureFilterSettings featureFilterCfg,
                          InputSpikesCoderSettings spikesEncodingCfg,
                          bool routeToReadout,
                          int inputNeuronsStartIdx
                          )
        {
            Name            = name;
            Idx             = idx;
            RouteToReadout  = routeToReadout;
            _featureFilter  = FeatureFilterFactory.Create(dataWorkingRange, featureFilterCfg);
            _iAnalogStimuli = 0;
            _currentDataIdx = 0;
            //Spikes encoder
            _spikesEncoder = new InputSpikesCoder(spikesEncodingCfg);
            //Analog neuron
            int verticalCycles = _spikesEncoder.Regime == InputEncoder.InputSpikesCoding.Vertical ? _spikesEncoder.LargestComponentLength : 1;

            AnalogNeuron = new AnalogInputNeuron(new NeuronLocation(InputEncoder.ReservoirID, inputNeuronsStartIdx, InputEncoder.PoolID, inputNeuronsStartIdx, idx, coordinates[0], coordinates[1], coordinates[2]), verticalCycles);
            ++inputNeuronsStartIdx;
            //Spiking neurons
            int spikingPopulationSize;

            if (_spikesEncoder.Regime == InputEncoder.InputSpikesCoding.Horizontal)
            {
                //Population encoding
                spikingPopulationSize = _spikesEncoder.AllSpikesFlatCollection.Length;
            }
            else if (_spikesEncoder.Regime == InputEncoder.InputSpikesCoding.Vertical)
            {
                //Spike-train encoding
                spikingPopulationSize = _spikesEncoder.ComponentSpikesCollection.Length;
            }
            else
            {
                //Forbidden encoding
                spikingPopulationSize = 0;
            }
            SpikingNeuronCollection = new SpikingInputNeuron[spikingPopulationSize];
            for (int i = 0; i < SpikingNeuronCollection.Length; i++)
            {
                SpikingNeuronCollection[i] = new SpikingInputNeuron(new NeuronLocation(InputEncoder.ReservoirID, inputNeuronsStartIdx, InputEncoder.PoolID, inputNeuronsStartIdx, idx, coordinates[0], coordinates[1], coordinates[2]));
                ++inputNeuronsStartIdx;
            }
            return;
        }
Example #5
0
        /// <summary>
        /// Creates deep copy of given settings
        /// </summary>
        /// <param name="settings">Settings of feature filter</param>
        public static IFeatureFilterSettings DeepClone(IFeatureFilterSettings settings)
        {
            switch (settings.Type)
            {
            case FeatureFilterBase.FeatureType.Binary:
                return(new BinFeatureFilterSettings((BinFeatureFilterSettings)settings));

            case FeatureFilterBase.FeatureType.Enum:
                return(new EnumFeatureFilterSettings((EnumFeatureFilterSettings)settings));

            case FeatureFilterBase.FeatureType.Real:
                return(new RealFeatureFilterSettings((RealFeatureFilterSettings)settings));

            default:
                throw new ArgumentException($"Unexpected feature type {settings.Type}", "settings");
            }
        }
Example #6
0
 //Constructors
 /// <summary>
 /// Creates an unitialized instance
 /// </summary>
 /// <param name="name">Input field name</param>
 /// <param name="featureFilterCfg">Configuration of feature filter associated with the input field</param>
 /// <param name="routeToReadout">Specifies whether to route input field to readout layer together with other predictors</param>
 /// <param name="spikeCodeCfg">Configuration of spike code</param>
 public ExternalFieldSettings(string name,
                              IFeatureFilterSettings featureFilterCfg,
                              bool routeToReadout            = DefaultRouteToReadout,
                              SpikeCodeSettings spikeCodeCfg = null
                              )
 {
     Name             = name;
     FeatureFilterCfg = (IFeatureFilterSettings)featureFilterCfg.DeepClone();
     RouteToReadout   = routeToReadout;
     SpikeCodeCfg     = (SpikeCodeSettings)spikeCodeCfg?.DeepClone();
     if (featureFilterCfg.Type == FeatureFilterBase.FeatureType.Real && spikeCodeCfg == null)
     {
         SpikeCodeCfg = new SpikeCodeSettings();
     }
     Check();
     return;
 }
Example #7
0
        //Constructor
        /// <summary>
        /// Creates an initialized instance
        /// </summary>
        /// <param name="name">Name of the input field</param>
        /// <param name="idx">Index of the input field</param>
        /// <param name="coordinates">Input coordinates (entry point)</param>
        /// <param name="dataWorkingRange">Input data range</param>
        /// <param name="featureFilterCfg">Feature filter configuration</param>
        /// <param name="spikeCodeCfg">Configuration of the input spike code</param>
        /// <param name="routeToReadout">Specifies whether to route values as the additional predictors to readout</param>
        /// <param name="inputNeuronsStartIdx">Index of the first input neuron of this unit among all input neurons</param>
        public InputField(string name,
                          int idx,
                          int[] coordinates,
                          Interval dataWorkingRange,
                          IFeatureFilterSettings featureFilterCfg,
                          SpikeCodeSettings spikeCodeCfg,
                          bool routeToReadout,
                          int inputNeuronsStartIdx
                          )
        {
            Name           = name;
            Idx            = idx;
            RouteToReadout = routeToReadout;
            _featureFilter = FeatureFilterFactory.Create(dataWorkingRange, featureFilterCfg);
            //Analog neuron
            AnalogNeuron = new AnalogInputNeuron(new NeuronLocation(InputEncoder.ReservoirID, inputNeuronsStartIdx, InputEncoder.PoolID, inputNeuronsStartIdx, idx, coordinates[0], coordinates[1], coordinates[2]));
            ++inputNeuronsStartIdx;
            //Spiking neurons
            _realSpikeCode = null;
            int populationSize = -1;

            switch (_featureFilter.Type)
            {
            case FeatureFilterBase.FeatureType.Real:
                _realSpikeCode = new SpikeCode(spikeCodeCfg);
                populationSize = _realSpikeCode.Code.Length;
                break;

            case FeatureFilterBase.FeatureType.Binary:
                populationSize = 1;
                break;

            case FeatureFilterBase.FeatureType.Enum:
                populationSize = ((EnumFeatureFilterSettings)featureFilterCfg).NumOfElements;
                break;
            }
            SpikingNeuronCollection = new SpikingInputNeuron[populationSize];
            for (int i = 0; i < SpikingNeuronCollection.Length; i++)
            {
                SpikingNeuronCollection[i] = new SpikingInputNeuron(new NeuronLocation(InputEncoder.ReservoirID, inputNeuronsStartIdx, InputEncoder.PoolID, inputNeuronsStartIdx, idx, coordinates[0], coordinates[1], coordinates[2]));
                ++inputNeuronsStartIdx;
            }
            return;
        }