Užrašai, ReLU
ReLU - rectified linear unit (angl.)
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.)
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)
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: