Ejemplo n.º 1
0
        /// <summary>
        /// Oblicza moc podanego sygna³u, u¿ywaj¹c zadanej miary.
        /// </summary>
        /// <param name="signals">Sygna³, którego moc obliczamy</param>
        /// <param name="norm">Norma, jak¹ mierzymy moc (euklidesowa lub manhattañska)
        /// </param>
        /// <returns>Obliczona moc</returns>
        /// <remarks>
        /// Moc sygna³u wp³ywa na to, jak bardzo "istotny" jest on dla neuronu.
        /// Jeœli zamiast sygna³u podamy wartoœci wspó³czynników wag, dostaniemy
        /// moc œladu pamiêciowego - czyli wartoœæ okreœlaj¹c¹, jak bardzo
        /// "zdecydowany" jest dany neuron.
        /// </remarks>
        /// <seealso cref="MemoryTraceStrength(StrengthNorm)"/>
        public static double Strength(double[] signals, StrengthNorm norm)
        {
            double strength = 0;

            switch (norm)
            {
            case StrengthNorm.Manhattan:
                foreach (double s in signals)
                {
                    strength += Math.Abs(s);
                }
                return(strength);

            case StrengthNorm.Euclidean:
                foreach (double s in signals)
                {
                    strength += s * s;
                }
                return(Math.Sqrt(strength));

            default:
                return(0.0);
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Oblicza moc œladu pamiêciowego.
 /// </summary>
 /// <param name="norm">Norma, jak¹ mierzymy moc (euklidesowa lub manhattañska)
 /// </param>
 /// <returns>Obliczona moc œladu pamiêciowego</returns>
 /// <remarks>
 /// Moc œladu pamiêciowego okreœla, jak bardzo "zdecydowany" jest
 /// neuron. Im wiêksza moc œladu pamiêciowego, tym bardziej radykalne bêd¹
 /// jego "opinie".
 /// </remarks>
 public double MemoryTraceStrength(StrengthNorm norm)
 {
     return(Strength(_weights, norm));
 }