Užrašai

Užrašai, ReLU


ReLU - rectified linear unit (angl.)

ReLU
ReLU grafikas:
ReLU grafikas

Python:

def ReLU( x ):
    return max( 0.0, x )

C:

#include <stdio.h>
#include <stdlib.h>

double ReLU(double x)
{
    if(x>0)
    {
        return x;
    }
    else
    {
        return 0.0;
    }
}

int main()
{
    double x, rezultatas;

    x = 0.0;

    rezultatas = ReLU(x);

    printf("ReLU x: %f rezultatas: %f\n", x, rezultatas);

    return 0;
}

ReLU x: -2.000000 rezultatas: 0.000000
ReLU x: -1.000000 rezultatas: 0.000000
ReLU x: -0.500000 rezultatas: 0.000000
ReLU x: 0.000000 rezultatas: 0.000000
ReLU x: 0.500000 rezultatas: 0.500000
ReLU x: 1.000000 rezultatas: 1.000000
ReLU x: 2.000000 rezultatas: 2.000000


LeakyReLU

Leaky ReLU - Leaky Rectified Linear Unit (angl.)

ReLU
LReLU grafikas
Python:

def LeakyReLU( x ):
    if x>0:
        return x
    else:
        return x * 0.01

C:

#include <stdio.h>
#include <stdlib.h>

double LeakyReLU( double x )
{
    return ( x > 0 ) ? x : 0.01 * x;
}

int main()
{

    double x;

    x = -2.0f;

    printf( "x: %f rezultatas: %f\n", x, LeakyReLU( x ));

    x = -1.0f;

    printf( "x: %f rezultatas: %f\n", x, LeakyReLU( x ));

    x = 0.0f;

    printf( "x: %f rezultatas: %f\n", x, LeakyReLU( x ));

    x = 1.0f;

    printf( "x: %f rezultatas: %f\n", x, LeakyReLU( x ));

    x = 2.0f;

    printf( "x: %f rezultatas: %f\n", x, LeakyReLU( x ));

}

Rezultatas:

x: -2.000000 rezultatas: -0.020000
x: -1.000000 rezultatas: -0.010000
x: 0.000000 rezultatas: 0.000000
x: 1.000000 rezultatas: 1.000000
x: 2.000000 rezultatas: 2.000000


C su MACRO:

#include <stdio.h>
#include <stdlib.h>

#define LEAKY_RELU(x) ((x) > 0 ? (x) : 0.01 * (x))

int main()
{

    double x;

    x = -2.0f;

    printf( "x: %f rezultatas: %f\n", x, LEAKY_RELU( x ));

    x = -1.0f;

    printf( "x: %f rezultatas: %f\n", x, LEAKY_RELU( x ));

    x = 0.0f;

    printf( "x: %f rezultatas: %f\n", x, LEAKY_RELU( x ));

    x = 1.0f;

    printf( "x: %f rezultatas: %f\n", x, LEAKY_RELU( x ));

    x = 2.0f;

    printf( "x: %f rezultatas: %f\n", x, LEAKY_RELU( x ));

}

Rezultatas:

x: -2.000000 rezultatas: -0.020000
x: -1.000000 rezultatas: -0.010000
x: 0.000000 rezultatas: 0.000000
x: 1.000000 rezultatas: 1.000000
x: 2.000000 rezultatas: 2.000000


PReLU (Parametric ReLU)


ReLU
PReLU grafikai

Python:

def PReLU(x, a):
    if x > 0:
        return x
    else:
        return x * a

C:

#include <stdio.h>
#include <stdlib.h>

double ParametricReLU( double x, double nuotekio_faktorius )
{
    return ( x > 0 ) ? x : nuotekio_faktorius * x;
}

int main()
{

    double x, n_f;

    n_f = 0.02f;

    x = -2.0f;

    printf( "x: %f n_f: %f rezultatas: %f\n", x, n_f, ParametricReLU( x, n_f ));

    x = -1.0f;

    printf( "x: %f n_f: %f rezultatas: %f\n", x, n_f, ParametricReLU( x, n_f ));

    x = 0.0f;

    printf( "x: %f n_f: %f rezultatas: %f\n", x, n_f, ParametricReLU( x, n_f ));

    x = 1.0f;

    printf( "x: %f n_f: %f rezultatas: %f\n", x, n_f, ParametricReLU( x, n_f ));

    x = 2.0f;

    printf( "x: %f n_f: %f rezultatas: %f\n", x, n_f, ParametricReLU( x, n_f ));

}

Rezultatas:

x: -2.000000 n_f: 0.020000 rezultatas: -0.040000
x: -1.000000 n_f: 0.020000 rezultatas: -0.020000
x: 0.000000 n_f: 0.020000 rezultatas: 0.000000
x: 1.000000 n_f: 0.020000 rezultatas: 1.000000
x: 2.000000 n_f: 0.020000 rezultatas: 2.000000


C su MACRO:

#include <stdio.h>
#include <stdlib.h>

#define PARAMETRIC_RELU(x, nuotekio_faktorius) ((x) > 0 ? (x) : (nuotekio_faktorius) * (x))

int main()
{

    double x, n_f;

    n_f = 0.02f;

    x = -2.0f;

    printf( "x: %f n_f: %f rezultatas: %f\n", x, n_f, PARAMETRIC_RELU( x, n_f ));

    x = -1.0f;

    printf( "x: %f n_f: %f rezultatas: %f\n", x, n_f, PARAMETRIC_RELU( x, n_f ));

    x = 0.0f;

    printf( "x: %f n_f: %f rezultatas: %f\n", x, n_f, PARAMETRIC_RELU( x, n_f ));

    x = 1.0f;

    printf( "x: %f n_f: %f rezultatas: %f\n", x, n_f, PARAMETRIC_RELU( x, n_f ));

    x = 2.0f;

    printf( "x: %f n_f: %f rezultatas: %f\n", x, n_f, PARAMETRIC_RELU( x, n_f ));

}

Rezultatas:

x: -2.000000 n_f: 0.020000 rezultatas: -0.040000
x: -1.000000 n_f: 0.020000 rezultatas: -0.020000
x: 0.000000 n_f: 0.020000 rezultatas: 0.000000
x: 1.000000 n_f: 0.020000 rezultatas: 1.000000
x: 2.000000 n_f: 0.020000 rezultatas: 2.000000



Nuorodos:

Rectifier (neural networks), Wiki (angl.)