AI-NeuralNet-Kohonen-Demo-RGB
view release on metacpan or search on metacpan
sub train { my ($self,$epochs) = (shift,shift);
my $label_txt;
$epochs = $self->{epochs} unless defined $epochs;
$self->{display_scale} = 10 if not defined $self->{display_scale};
$self->{mw} = MainWindow->new(
-width => 200+($self->{map_dim_x} * $self->{display_scale}),
-height => 200+($self->{map_dim_y} * $self->{display_scale}),
);
my $quit_flag = 0;
my $quit_code = sub {$quit_flag = 1};
$self->{mw}->protocol('WM_DELETE_WINDOW' => $quit_code);
$self->{c} = $self->{mw}->Canvas(
-width => 50+($self->{map_dim_x} * $self->{display_scale}),
-height => 50+($self->{map_dim_y} * $self->{display_scale}),
-relief => 'ridge',
-border => 5,
);
$self->{c}->pack(-side=>'top');
my $l = $self->{mw}->Label(-text => ' ',-textvariable=>\$label_txt);
$l->pack(-side=>'left');
# Replaces Tk's MainLoop
for (0..$self->{epochs}) {
if ($quit_flag) {
$self->{mw}->destroy;
return;
}
$self->{t}++; # Measure epoch
my $target = $self->_select_target;
my $bmu = $self->find_bmu($target);
$self->_adjust_neighbours_of($bmu,$target);
$self->_decay_learning_rate;
( run in 0.526 second using v1.01-cache-2.11-cpan-94b05bcf43c )