예제 #1
0
 /// <summary>
 /// The deep copy constructor
 /// </summary>
 /// <param name="source">Source instance</param>
 public HiddenNeuronPredictorsSettings(HiddenNeuronPredictorsSettings source)
 {
     //Params
     Params = source.Params?.DeepClone();
     //Permits
     Activation             = source.Activation;
     SquaredActivation      = source.SquaredActivation;
     FiringExpWRate         = source.FiringExpWRate;
     FiringFadingSum        = source.FiringFadingSum;
     FiringCount            = source.FiringCount;
     FiringBinPattern       = source.FiringBinPattern;
     NumOfEnabledPredictors = source.NumOfEnabledPredictors;
     return;
 }
예제 #2
0
 /// <summary>
 /// Creates new initialized instance.
 /// </summary>
 /// <param name="cfg">Configuration to be used. Note that Params member must not be null.</param>
 public HiddenNeuronPredictors(HiddenNeuronPredictorsSettings cfg)
 {
     Cfg = cfg;
     if (Cfg.Params.FiringCountWindow == SpikesBuffLength)
     {
         _firingCountBit = _highestBit;
     }
     else
     {
         _firingCountBit = 1ul;
         for (int i = 1; i < Cfg.Params.FiringCountWindow; i++)
         {
             _firingCountBit <<= 1;
         }
     }
     Reset();
     return;
 }
예제 #3
0
        /// <summary>
        /// See the base.
        /// </summary>
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }
            HiddenNeuronPredictorsSettings cmpSettings = obj as HiddenNeuronPredictorsSettings;

            if (!Equals(Params, cmpSettings.Params) ||
                Activation != cmpSettings.Activation ||
                SquaredActivation != cmpSettings.SquaredActivation ||
                FiringExpWRate != cmpSettings.FiringExpWRate ||
                FiringFadingSum != cmpSettings.FiringFadingSum ||
                FiringCount != cmpSettings.FiringCount ||
                FiringBinPattern != cmpSettings.FiringBinPattern ||
                NumOfEnabledPredictors != cmpSettings.NumOfEnabledPredictors
                )
            {
                return(false);
            }
            return(true);
        }
예제 #4
0
 //Constructor
 /// <summary>
 /// Creates an initialized instance
 /// </summary>
 /// <param name="placement">Home pool identificator and neuron placement within the pool.</param>
 /// <param name="role">Neuron's role (Excitatory/Inhibitory).</param>
 /// <param name="activation">Instantiated activation function.</param>
 /// <param name="signalingRestriction">Output signaling restriction. Spiking activation causes output signal always restricted to SpikingOnly.</param>
 /// <param name="predictorsCfg">Enabled/Disabled predictors for the neuron.</param>
 /// <param name="bias">Constant bias to be applied.</param>
 /// <param name="analogFiringThreshold">A number between 0 and 1 (LT1). Every time the new activation value is higher than the previous activation value by at least the threshold, it is evaluated as a firing event. Ignored in case of spiking activation.</param>
 /// <param name="retainmentStrength">Strength of the analog neuron's retainment property. Ignored in case of spiking activation.</param>
 public HiddenNeuron(NeuronPlacement placement,
                     NeuronCommon.NeuronRole role,
                     IActivationFunction activation,
                     NeuronCommon.NeuronSignalingRestrictionType signalingRestriction,
                     HiddenNeuronPredictorsSettings predictorsCfg,
                     double bias = 0,
                     double analogFiringThreshold = PoolSettings.NeuronGroupSettings.DefaultAnalogFiringThreshold,
                     double retainmentStrength    = 0
                     )
 {
     Placement  = placement;
     Statistics = new NeuronStatistics();
     if (role == NeuronCommon.NeuronRole.Input)
     {
         throw new ArgumentException("Role of the hidden neuron can not be Input.", "role");
     }
     Role          = role;
     Bias          = bias;
     PredictorsCfg = predictorsCfg;
     //Activation specific
     _activation = activation;
     if (activation.TypeOfActivation == ActivationType.Spiking)
     {
         //Spiking
         SignalingRestriction   = NeuronCommon.NeuronSignalingRestrictionType.SpikingOnly;
         _analogFiringThreshold = 0;
         _retainmentStrength    = 0;
     }
     else
     {
         //Analog
         SignalingRestriction   = signalingRestriction;
         _analogFiringThreshold = analogFiringThreshold;
         _retainmentStrength    = retainmentStrength;
     }
     _predictors = predictorsCfg != null ? new HiddenNeuronPredictors(predictorsCfg) : null;
     Reset(false);
     return;
 }
예제 #5
0
        //Constructors
        /// <summary>
        /// Creates initialized instance as a result of neuron group, pool and reservoir instance predictors settings
        /// </summary>
        /// <param name="groupPredictorsSettings">Neuron group predictors settings</param>
        /// <param name="poolPredictorsSettings">Pool predictors settings</param>
        /// <param name="reservoirPredictorsSettings">Reservoir predictors settings</param>
        public HiddenNeuronPredictorsSettings(HiddenNeuronPredictorsSettings groupPredictorsSettings,
                                              HiddenNeuronPredictorsSettings poolPredictorsSettings,
                                              HiddenNeuronPredictorsSettings reservoirPredictorsSettings
                                              )
        {
            //Params
            Params = groupPredictorsSettings?.Params != null?groupPredictorsSettings.Params.DeepClone() : (poolPredictorsSettings?.Params != null ? poolPredictorsSettings.Params.DeepClone() : (reservoirPredictorsSettings?.Params != null ? reservoirPredictorsSettings.Params.DeepClone() : new Settings()));

            //Permits
            Activation = ((groupPredictorsSettings == null ? true : groupPredictorsSettings.Activation) &&
                          (poolPredictorsSettings == null ? true : poolPredictorsSettings.Activation) &&
                          (reservoirPredictorsSettings == null ? true : reservoirPredictorsSettings.Activation)
                          );
            SquaredActivation = ((groupPredictorsSettings == null ? true : groupPredictorsSettings.SquaredActivation) &&
                                 (poolPredictorsSettings == null ? true : poolPredictorsSettings.SquaredActivation) &&
                                 (reservoirPredictorsSettings == null ? true : reservoirPredictorsSettings.SquaredActivation)
                                 );
            FiringExpWRate = ((groupPredictorsSettings == null ? true : groupPredictorsSettings.FiringExpWRate) &&
                              (poolPredictorsSettings == null ? true : poolPredictorsSettings.FiringExpWRate) &&
                              (reservoirPredictorsSettings == null ? true : reservoirPredictorsSettings.FiringExpWRate)
                              );
            FiringFadingSum = ((groupPredictorsSettings == null ? true : groupPredictorsSettings.FiringFadingSum) &&
                               (poolPredictorsSettings == null ? true : poolPredictorsSettings.FiringFadingSum) &&
                               (reservoirPredictorsSettings == null ? true : reservoirPredictorsSettings.FiringFadingSum)
                               );
            FiringCount = ((groupPredictorsSettings == null ? true : groupPredictorsSettings.FiringCount) &&
                           (poolPredictorsSettings == null ? true : poolPredictorsSettings.FiringCount) &&
                           (reservoirPredictorsSettings == null ? true : reservoirPredictorsSettings.FiringCount)
                           );
            FiringBinPattern = ((groupPredictorsSettings == null ? true : groupPredictorsSettings.FiringBinPattern) &&
                                (poolPredictorsSettings == null ? true : poolPredictorsSettings.FiringBinPattern) &&
                                (reservoirPredictorsSettings == null ? true : reservoirPredictorsSettings.FiringBinPattern)
                                );
            NumOfEnabledPredictors = GetNumOfEnabledPredictors();
            return;
        }
예제 #6
0
        /// <summary>
        /// Creates the deep copy instance of this instance
        /// </summary>
        public HiddenNeuronPredictorsSettings DeepClone()
        {
            HiddenNeuronPredictorsSettings clone = new HiddenNeuronPredictorsSettings(this);

            return(clone);
        }