Пример #1
0
        /// <summary>
        /// See the base.
        /// </summary>
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }
            ActivationSettings cmpSettings = obj as ActivationSettings;

            if (FunctionType != cmpSettings.FunctionType ||
                !Arg1.Equals(cmpSettings.Arg1) ||
                !Arg2.Equals(cmpSettings.Arg2) ||
                !Arg3.Equals(cmpSettings.Arg3) ||
                !Arg4.Equals(cmpSettings.Arg4) ||
                !Arg5.Equals(cmpSettings.Arg5) ||
                !Arg6.Equals(cmpSettings.Arg6) ||
                !Arg7.Equals(cmpSettings.Arg7) ||
                !Arg8.Equals(cmpSettings.Arg8) ||
                !Arg9.Equals(cmpSettings.Arg9) ||
                !Arg10.Equals(cmpSettings.Arg10) ||
                !Arg11.Equals(cmpSettings.Arg11) ||
                !Arg12.Equals(cmpSettings.Arg12) ||
                !Arg13.Equals(cmpSettings.Arg13) ||
                !Arg14.Equals(cmpSettings.Arg14) ||
                !Arg15.Equals(cmpSettings.Arg15)
                )
            {
                return(false);
            }
            return(true);
        }
Пример #2
0
 /// <summary>
 /// Copy constructor
 /// </summary>
 /// <param name="source">Source instance</param>
 public ActivationSettings(ActivationSettings source)
 {
     FunctionType = source.FunctionType;
     Arg1         = source.Arg1;
     Arg2         = source.Arg2;
     Arg3         = source.Arg3;
     Arg4         = source.Arg4;
     Arg5         = source.Arg5;
     Arg6         = source.Arg6;
     Arg7         = source.Arg7;
     Arg8         = source.Arg8;
     Arg9         = source.Arg9;
     Arg10        = source.Arg10;
     Arg11        = source.Arg11;
     Arg12        = source.Arg12;
     Arg13        = source.Arg13;
     Arg14        = source.Arg14;
     Arg15        = source.Arg15;
     return;
 }
Пример #3
0
        /// <summary>
        /// Creates the deep copy instance of this instance
        /// </summary>
        public ActivationSettings DeepClone()
        {
            ActivationSettings clone = new ActivationSettings(this);

            return(clone);
        }
Пример #4
0
        /// <summary>
        /// Returns the new instance of the activation function
        /// </summary>
        /// <param name="settings">
        /// Specific activation settings
        /// </param>
        public static IActivationFunction Create(ActivationSettings settings)
        {
            switch (settings.FunctionType)
            {
            case Function.AdExpIF:
                return(new AdExpIF(double.IsNaN(settings.Arg1) ? 5 : settings.Arg1,     //membraneTimeScale (ms)
                                   double.IsNaN(settings.Arg2) ? 500 : settings.Arg2,   //membraneResistance (MOhm)
                                   double.IsNaN(settings.Arg3) ? -70 : settings.Arg3,   //restV (mV)
                                   double.IsNaN(settings.Arg4) ? -51 : settings.Arg4,   //resetV (mV)
                                   double.IsNaN(settings.Arg5) ? -50 : settings.Arg5,   //rheobaseV (mV)
                                   double.IsNaN(settings.Arg6) ? -30 : settings.Arg6,   //firingThresholdV (mV)
                                   double.IsNaN(settings.Arg7) ? 2 : settings.Arg7,     //sharpnessDeltaT (mV)
                                   double.IsNaN(settings.Arg8) ? 0.5 : settings.Arg8,   //adaptationVoltageCoupling (nS)
                                   double.IsNaN(settings.Arg9) ? 100 : settings.Arg9,   //adaptationTimeConstant (ms)
                                   double.IsNaN(settings.Arg10) ? 7 : settings.Arg10,   //spikeTriggeredAdaptationIncrement (pA)
                                   double.IsNaN(settings.Arg11) ? 200 : settings.Arg11  //stimuliCoeff (pA)
                                   ));

            case Function.AdSimpleIF:
                return(new AdSimpleIF(double.IsNaN(settings.Arg1) ? 15 : settings.Arg1,   //membraneResistance (MOhm)
                                      double.IsNaN(settings.Arg2) ? 0.1 : settings.Arg2,  //membrane decay rate
                                      double.IsNaN(settings.Arg3) ? 5 : settings.Arg3,    //resetV (mV)
                                      double.IsNaN(settings.Arg4) ? 20 : settings.Arg4,   //firingThresholdV (mV)
                                      double.IsNaN(settings.Arg5) ? 1 : settings.Arg5     //initial stimuli coeff
                                      ));

            case Function.BentIdentity:
                return(new BentIdentity());

            case Function.Elliot:
                return(new Elliot((double.IsNaN(settings.Arg1) ? 1 : settings.Arg1)));

            case Function.ExpIF:
                return(new ExpIF(double.IsNaN(settings.Arg1) ? 12 : settings.Arg1,    //membraneTimeScale (ms)
                                 double.IsNaN(settings.Arg2) ? 20 : settings.Arg2,    //membraneResistance (MOhm)
                                 double.IsNaN(settings.Arg3) ? -65 : settings.Arg3,   //restV (mV)
                                 double.IsNaN(settings.Arg4) ? -60 : settings.Arg4,   //resetV (mV)
                                 double.IsNaN(settings.Arg5) ? -55 : settings.Arg5,   //rheobaseV (mV)
                                 double.IsNaN(settings.Arg6) ? -30 : settings.Arg6,   //firingThresholdV (mV)
                                 double.IsNaN(settings.Arg7) ? 2 : settings.Arg7,     //sharpnessDeltaT (mV)
                                 double.IsNaN(settings.Arg8) ? 1 : settings.Arg8,     //refractoryPeriods (ms)
                                 double.IsNaN(settings.Arg9) ? 5.5 : settings.Arg9    //stimuli coeff
                                 ));

            case Function.Gaussian:
                return(new Gaussian());

            case Function.Identity:
                return(new Identity());

            case Function.ISRU:
                return(new ISRU((double.IsNaN(settings.Arg1) ? 1 : settings.Arg1)));

            case Function.LeakyIF:
                return(new LeakyIF(double.IsNaN(settings.Arg1) ? 8 : settings.Arg1,     //membraneTimeScale (ms)
                                   double.IsNaN(settings.Arg2) ? 10 : settings.Arg2,    //membraneResistance (MOhm)
                                   double.IsNaN(settings.Arg3) ? -70 : settings.Arg3,   //restV (mV)
                                   double.IsNaN(settings.Arg4) ? -65 : settings.Arg4,   //resetV (mV)
                                   double.IsNaN(settings.Arg5) ? -50 : settings.Arg5,   //firingThresholdV (mV)
                                   double.IsNaN(settings.Arg6) ? 1 : settings.Arg6,     //refractoryPeriods (ms)
                                   double.IsNaN(settings.Arg7) ? 5.5 : settings.Arg7    //stimuli coeff
                                   ));

            case Function.LeakyReLU:
                return(new LeakyReLU((double.IsNaN(settings.Arg1) ? 0.01 : settings.Arg1)));

            case Function.Sigmoid:
                return(new Sigmoid());

            case Function.SimpleIF:
                return(new SimpleIF(double.IsNaN(settings.Arg1) ? 15 : settings.Arg1,   //membraneResistance (MOhm)
                                    double.IsNaN(settings.Arg2) ? 0.05 : settings.Arg2, //membrane decay rate
                                    double.IsNaN(settings.Arg3) ? 5 : settings.Arg3,    //resetV (mV)
                                    double.IsNaN(settings.Arg4) ? 20 : settings.Arg4,   //firingThresholdV (mV)
                                    double.IsNaN(settings.Arg5) ? 0 : settings.Arg5,    //refractoryPeriods (ms)
                                    double.IsNaN(settings.Arg6) ? 1 : settings.Arg6     //stimuli coeff
                                    ));

            case Function.Sinc:
                return(new Sinc());

            case Function.Sinusoid:
                return(new Sinusoid());

            case Function.SoftExponential:
                return(new SoftExponential((double.IsNaN(settings.Arg1) ? 0 : settings.Arg1)));

            case Function.SoftPlus:
                return(new SoftPlus());

            case Function.TanH:
                return(new TanH());

            default:
                throw new ArgumentException($"Unsupported activation function type: {settings.FunctionType}");
            }
        }