Page 1 of 1

Math E and function Sigmoid()

Posted: Fri Jun 30, 2017 5:03 pm
by Antonio Linares
https://www.lemoda.net/c/maths-constants/

Code: Select all

#include "FiveWin.ch"

function Main()

   MsgInfo( Math_E() )

return nil

#pragma BEGINDUMP

#include <hbapi.h>
#include <math.h>

HB_FUNC( MATH_E )
{
   hb_retnd( M_E );
}

#pragma ENDDUMP

Re: Math E and function Sigmoid()

Posted: Sat Jul 01, 2017 4:43 am
by Antonio Linares
function Sigmoid( nValue )

return 1 / ( 1 + Math_E() ^ ( -nValue / 1 ) )

Re: Math E and function Sigmoid()

Posted: Sat Jul 01, 2017 4:59 am
by Antonio Linares
Sigmoid demo:

sigmoid.prg

Code: Select all

#include "FiveWin.ch"

function Main()

   local n

   for n = 1 to 20
      MsgInfo( Sigmoid( If( n % 2 == 0, -1, 1 ) * nRandom() / nRandom() ) )
   next   
 
return nil

function Sigmoid( nValue )

return 1 / ( 1 + Math_E() ^ ( -nValue / 1 ) )

#pragma BEGINDUMP

#include <hbapi.h>
#include <math.h>

HB_FUNC( MATH_E )
{
   hb_retnd( M_E );
}

#pragma ENDDUMP

Re: Math E and function Sigmoid()

Posted: Sat Jul 01, 2017 5:03 am
by Antonio Linares
https://en.wikipedia.org/wiki/Sigmoid_function
A wide variety of sigmoid functions have been used as the activation function of artificial neurons
Image

Re: Math E and function Sigmoid()

Posted: Sat Jul 01, 2017 7:47 am
by Enrico Maria Giordano
Antonio Linares wrote:function Sigmoid( nValue )

return 1 / ( 1 + Math_E() ^ ( -nValue / 1 ) )
Simplified:

Code: Select all

return 1 / ( 1 + Math_E()  ^ -nValue )
EMG

Re: Math E and function Sigmoid()

Posted: Sat Jul 01, 2017 7:57 am
by Antonio Linares
thanks :-)

Re: Math E and function Sigmoid()

Posted: Fri Oct 02, 2020 9:19 am
by Antonio Linares
function dSigmoid( n ) --> returns the derivative of the sigmoid function

Code: Select all

function dSigmoid( nValue )

   local n := Sigmoid( nValue )

return n * ( 1 - n )

Re: Math E and function Sigmoid()

Posted: Fri Oct 02, 2020 9:25 am
by Antonio Linares
Example

Code: Select all

function Main()

   local n

   SET DECIMALS TO 10

   for n = 1 to 10
      ? Sigmoid( n ), dSigmoid( n )
   next

return nil

function Sigmoid( nValue )

return 1 / ( 1 + Math_E()  ^ -nValue )

function dSigmoid( nValue ) // returns the derivative of the sigmoid function

   local n := Sigmoid( nValue )

return n * ( 1 - n )
 
0.7310585786 0.19661193324148180000
0.8807970780 0.10499358540350660000
0.9525741268 0.04517665973091220000
0.9820137900 0.01766270621329111000
0.9933071491 0.00664805667079003200
0.9975273768 0.00246650929135993100
0.9990889488 0.00091022118012178410
0.9996646499 0.00033523767075636810
0.9998766054 0.00012337934976493020
0.9999546021 0.00004539580773590766