コード例 #1
0
 //Constructors
 /// <summary>
 /// Creates an initialized instance
 /// </summary>
 /// <param name="role">Role of the neuron (excitatory or inhibitory)</param>
 /// <param name="refractoryPeriods">Number of after spike computation cycles while an input stimuli is ignored (ms)</param>
 /// <param name="solverMethod">ODE numerical solver method</param>
 /// <param name="solverCompSteps">ODE numerical solver computation steps of the time step</param>
 public AutoIzhikevichIFSettings(NeuronCommon.NeuronRole role,
                                 int refractoryPeriods,
                                 ODENumSolver.Method solverMethod,
                                 int solverCompSteps
                                 )
 {
     Role = role;
     RefractoryPeriods = refractoryPeriods;
     SolverMethod      = solverMethod;
     SolverCompSteps   = solverCompSteps;
     return;
 }
コード例 #2
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;
 }
コード例 #3
0
 //Methods
 /// <summary>
 /// Returns appropriate dynamics settings
 /// </summary>
 /// <param name="sourceNeuronType">Type of the source neuron</param>
 /// <param name="sourceNeuronRole">Role of the source neuron</param>
 /// <param name="targetNeuronType">Type of the target neuron</param>
 /// <param name="targetNeuronRole">Role of the target neuron</param>
 public DynamicsSettings GetDynamicsSettings(ActivationType sourceNeuronType,
                                             NeuronCommon.NeuronRole sourceNeuronRole,
                                             ActivationType targetNeuronType,
                                             NeuronCommon.NeuronRole targetNeuronRole
                                             )
 {
     if (sourceNeuronType == ActivationType.Spiking &&
         targetNeuronType == ActivationType.Spiking &&
         sourceNeuronRole == NeuronCommon.NeuronRole.Excitatory &&
         targetNeuronRole == NeuronCommon.NeuronRole.Excitatory
         )
     {
         return(S2SSynapseE2EDynamicsCfg);
     }
     else if (sourceNeuronType == ActivationType.Spiking &&
              targetNeuronType == ActivationType.Spiking &&
              sourceNeuronRole == NeuronCommon.NeuronRole.Excitatory &&
              targetNeuronRole == NeuronCommon.NeuronRole.Inhibitory
              )
     {
         return(S2SSynapseE2IDynamicsCfg);
     }
     else if (sourceNeuronType == ActivationType.Spiking &&
              targetNeuronType == ActivationType.Spiking &&
              sourceNeuronRole == NeuronCommon.NeuronRole.Inhibitory &&
              targetNeuronRole == NeuronCommon.NeuronRole.Excitatory
              )
     {
         return(S2SSynapseI2EDynamicsCfg);
     }
     else if (sourceNeuronType == ActivationType.Spiking &&
              targetNeuronType == ActivationType.Spiking &&
              sourceNeuronRole == NeuronCommon.NeuronRole.Inhibitory &&
              targetNeuronRole == NeuronCommon.NeuronRole.Inhibitory
              )
     {
         return(S2SSynapseI2IDynamicsCfg);
     }
     else if (sourceNeuronType == ActivationType.Analog &&
              targetNeuronType == ActivationType.Spiking &&
              sourceNeuronRole == NeuronCommon.NeuronRole.Excitatory &&
              targetNeuronRole == NeuronCommon.NeuronRole.Excitatory
              )
     {
         return(A2SSynapseE2EDynamicsCfg);
     }
     else if (sourceNeuronType == ActivationType.Analog &&
              targetNeuronType == ActivationType.Spiking &&
              sourceNeuronRole == NeuronCommon.NeuronRole.Excitatory &&
              targetNeuronRole == NeuronCommon.NeuronRole.Inhibitory
              )
     {
         return(A2SSynapseE2IDynamicsCfg);
     }
     else if (sourceNeuronType == ActivationType.Analog &&
              targetNeuronType == ActivationType.Spiking &&
              sourceNeuronRole == NeuronCommon.NeuronRole.Inhibitory &&
              targetNeuronRole == NeuronCommon.NeuronRole.Excitatory
              )
     {
         return(A2SSynapseI2EDynamicsCfg);
     }
     else if (sourceNeuronType == ActivationType.Analog &&
              targetNeuronType == ActivationType.Spiking &&
              sourceNeuronRole == NeuronCommon.NeuronRole.Inhibitory &&
              targetNeuronRole == NeuronCommon.NeuronRole.Inhibitory
              )
     {
         return(A2SSynapseI2IDynamicsCfg);
     }
     else if (sourceNeuronType == ActivationType.Spiking &&
              targetNeuronType == ActivationType.Analog &&
              sourceNeuronRole == NeuronCommon.NeuronRole.Excitatory &&
              targetNeuronRole == NeuronCommon.NeuronRole.Excitatory
              )
     {
         return(S2ASynapseE2EDynamicsCfg);
     }
     else if (sourceNeuronType == ActivationType.Spiking &&
              targetNeuronType == ActivationType.Analog &&
              sourceNeuronRole == NeuronCommon.NeuronRole.Excitatory &&
              targetNeuronRole == NeuronCommon.NeuronRole.Inhibitory
              )
     {
         return(S2ASynapseE2IDynamicsCfg);
     }
     else if (sourceNeuronType == ActivationType.Spiking &&
              targetNeuronType == ActivationType.Analog &&
              sourceNeuronRole == NeuronCommon.NeuronRole.Inhibitory &&
              targetNeuronRole == NeuronCommon.NeuronRole.Excitatory
              )
     {
         return(S2ASynapseI2EDynamicsCfg);
     }
     else if (sourceNeuronType == ActivationType.Spiking &&
              targetNeuronType == ActivationType.Analog &&
              sourceNeuronRole == NeuronCommon.NeuronRole.Inhibitory &&
              targetNeuronRole == NeuronCommon.NeuronRole.Inhibitory
              )
     {
         return(S2ASynapseI2IDynamicsCfg);
     }
     else if (sourceNeuronType == ActivationType.Analog &&
              targetNeuronType == ActivationType.Analog &&
              sourceNeuronRole == NeuronCommon.NeuronRole.Excitatory &&
              targetNeuronRole == NeuronCommon.NeuronRole.Excitatory
              )
     {
         return(A2ASynapseE2EDynamicsCfg);
     }
     else if (sourceNeuronType == ActivationType.Analog &&
              targetNeuronType == ActivationType.Analog &&
              sourceNeuronRole == NeuronCommon.NeuronRole.Excitatory &&
              targetNeuronRole == NeuronCommon.NeuronRole.Inhibitory
              )
     {
         return(A2ASynapseE2IDynamicsCfg);
     }
     else if (sourceNeuronType == ActivationType.Analog &&
              targetNeuronType == ActivationType.Analog &&
              sourceNeuronRole == NeuronCommon.NeuronRole.Inhibitory &&
              targetNeuronRole == NeuronCommon.NeuronRole.Excitatory
              )
     {
         return(A2ASynapseI2EDynamicsCfg);
     }
     else if (sourceNeuronType == ActivationType.Analog &&
              targetNeuronType == ActivationType.Analog &&
              sourceNeuronRole == NeuronCommon.NeuronRole.Inhibitory &&
              targetNeuronRole == NeuronCommon.NeuronRole.Inhibitory
              )
     {
         return(A2ASynapseI2IDynamicsCfg);
     }
     return(null);
 }