AI-NeuralNet-FastSOM

 view release on metacpan or  search on metacpan

t/hexa.t  view on Meta::CPAN

#########################

# change 'tests => 1' to 'tests => last_test_to_print';

use Test::More qw(no_plan);
BEGIN { use_ok('AI::NeuralNet::FastSOM::Hexa') };

######
use Storable qw/store/;

{
    my $nn = AI::NeuralNet::FastSOM::Hexa->new(
        output_dim => 6,
        input_dim  => 3,
    );
    ok( $nn->isa('AI::NeuralNet::FastSOM::Hexa'), 'class' );
    is( $nn->{_R}, 3, 'R' );
    is( $nn->radius, 3, 'radius' );
}

{
    my $nn = AI::NeuralNet::FastSOM::Hexa->new(
        output_dim => 2,
        input_dim  => 3,
    );
    $nn->initialize( [ 0, 0, 1 ], [ 0, 1, 0 ] );

    my $d = $nn->diameter;
    for my $x ( 0 .. $d-1 ) {
        for my $y (0 .. $d-1) {
            ok(
                eq_array(
                    $nn->{map}->[$x]->[$y], 
                    $y == 0 ? [ 0, 0, 1 ] : [ 0, 1, 0 ]
                ), 'value init'
            );
        }
    }
#    warn Dumper $nn;
}

{
    my $nn = AI::NeuralNet::FastSOM::Hexa->new(
        output_dim => 2,
        input_dim  => 3,
    );
    $nn->initialize;

    for my $x ( 0 .. $nn->diameter -1 ) {
        for my $y ( 0 .. $nn->diameter -1 ) {
            ok(
                (!grep { $_ > 0.5 || $_ < -0.5 } @{ $nn->value ( $x, $y ) }),
                "$x, $y: random vectors in [-0.5, 0.5]"
            );
        }
    }
}

{
    my $nn = AI::NeuralNet::FastSOM::Hexa->new(
        output_dim => 2,
        input_dim  => 3,
    );



( run in 1.198 second using v1.01-cache-2.11-cpan-39bf76dae61 )