AI-ML
view release on metacpan or search on metacpan
t/01-activation-funcs.t view on Meta::CPAN
#!perl
use Test2::V0 qw'is float done_testing';
use Math::Lapack::Matrix;
use Math::Lapack::Expr;
use AI::ML::Expr;
use Data::Dumper;
my $m = Math::Lapack::Matrix->new(
[
[0, 0.002, 3, 4, 7.333, -.00008, -2.03456, 9, 100.3456, -300]
]
);
is($m->rows, 1, "Right number of rows");
is($m->columns, 10, "Right number of columns");
#Test Sigmoid
my $a = sigmoid($m);
_float($a->get_element(0,0), 0.5, "Element correct at 0,0");
_float($a->get_element(0,1), 5.005e-1, "Element correct at 0,1");
_float($a->get_element(0,2), 9.52574127e-001, "Element correct at 0,2");
_float($a->get_element(0,3), 9.82013790e-001, "Element correct at 0,3");
_float($a->get_element(0,4), 9.99346817e-001, "Element correct at 0,4");
_float($a->get_element(0,5), 4.99980000e-001, "Element correct at 0,5");
_float($a->get_element(0,6), 1.15621829e-001, "Element correct at 0,6");
_float($a->get_element(0,7), 9.99876605e-001, "Element correct at 0,7");
_float($a->get_element(0,8), 1, "Element correct at 0,8");
_float($a->get_element(0,9), 5.14820022e-131, "Element correct at 0,9");
#Test Derivative of Sigmoid
$a = d_sigmoid($m);
_float($a->get_element(0,0), 2.50000000e-001, "Element correct at 0,0");
_float($a->get_element(0,1), 2.49999750e-001, "Element correct at 0,1");
_float($a->get_element(0,2), 4.51766597e-002, "Element correct at 0,2");
_float($a->get_element(0,3), 1.76627062e-002, "Element correct at 0,3");
_float($a->get_element(0,4), 6.52756239e-004, "Element correct at 0,4");
_float($a->get_element(0,5), 2.50000000e-001, "Element correct at 0,5");
_float($a->get_element(0,6), 1.02253421e-001, "Element correct at 0,6");
_float($a->get_element(0,7), 1.23379350e-004, "Element correct at 0,7");
_float($a->get_element(0,8), 0, "Element correct at 0,8");
_float($a->get_element(0,9), 5.14820022e-131, "Element correct at 0,9");
#Test Relu
my $b = relu($m);
_float($b->get_element(0,0), 0, "Element correct at 0,0");
_float($b->get_element(0,1), 2.000000e-03, "Element correct at 0,1");
_float($b->get_element(0,2), 3, "Element correct at 0,2");
_float($b->get_element(0,3), 4, "Element correct at 0,3");
_float($b->get_element(0,4), 7.333000e+00, "Element correct at 0,4");
_float($b->get_element(0,5), 0, "Element correct at 0,5");
_float($b->get_element(0,6), 0, "Element correct at 0,6");
_float($b->get_element(0,7), 9, "Element correct at 0,7");
_float($b->get_element(0,8), 1.003456e+02, "Element correct at 0,8");
_float($b->get_element(0,9), 0, "Element correct at 0,9");
#Test derivative of Relu
$b = d_relu($m);
_float($b->get_element(0,0), 1, "Element correct at 0,0");
_float($b->get_element(0,1), 1, "Element correct at 0,1");
_float($b->get_element(0,2), 1, "Element correct at 0,2");
_float($b->get_element(0,3), 1, "Element correct at 0,3");
_float($b->get_element(0,4), 1, "Element correct at 0,4");
_float($b->get_element(0,5), 0, "Element correct at 0,5");
_float($b->get_element(0,6), 0, "Element correct at 0,6");
_float($b->get_element(0,7), 1, "Element correct at 0,7");
( run in 1.645 second using v1.01-cache-2.11-cpan-aadc1410aed )