/// <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; }
/// <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; }
/// <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); }
//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; }
//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; }
/// <summary> /// Creates the deep copy instance of this instance /// </summary> public HiddenNeuronPredictorsSettings DeepClone() { HiddenNeuronPredictorsSettings clone = new HiddenNeuronPredictorsSettings(this); return(clone); }