Files
ioccc/2011/dlowe/earlystop.pl
T
Landon Curt Noll 8197f10bae fix .gitignore, Makefile and README.md for 2011/dlowe
Unpack the `dlowe-aux-data.tar.bz2` compressed tarball
but keep the file as it is used in a try example.

Make `earlystop.pl` executable.
2023-03-23 20:55:05 -07:00

38 lines
976 B
Perl
Executable File

#!/usr/bin/env perl
use strict;
use warnings;
if ($#ARGV != 4) {
die "usage: $0 <net> <train corpus 1> <train corpus 0> <test corpus 1> <test corpus 0>\n"
}
my ($net, $train1, $train0, $test1, $test0) = @ARGV[0..4];
my $error = undef;
my $n = 1;
open TOUCH, '>', $net;
close TOUCH;
while (1) {
print "training $n to " . ($n+1000) . "...\n";
system "./dlowe -1000 $train1 $train0 < $net > $net.tmp 2>/dev/null";
rename "$net.tmp", $net;
my $current_error = 0;
for my $r (split /\s+/, `./dlowe $test1* < $net 2>&1 | awk '{print \$NF}'`) {
$current_error += ((1.0 - $r) ** 2);
}
for my $r (split /\s+/, `./dlowe $test0* < $net 2>&1 | awk '{print \$NF}'`) {
$current_error += ((0.0 - $r) ** 2);
}
if (defined $error) {
print "prior error = $error; current error = $current_error\n";
if ($error - $current_error < 0.01) {
last;
}
}
$error = $current_error;
$n += 1000;
}