# HG changeset patch # User bergstra@ip05.m # Date 1243830155 14400 # Node ID 504ce30bbd2a34c248f607dbf037cdbe20d95790 # Parent 5aa4cf1931977a965d07119d71face8d2014dafd added hard_time_limit to stopper diff -r 5aa4cf193197 -r 504ce30bbd2a pylearn/algorithms/stopper.py --- a/pylearn/algorithms/stopper.py Sun May 31 05:07:55 2009 -0400 +++ b/pylearn/algorithms/stopper.py Mon Jun 01 00:22:35 2009 -0400 @@ -1,3 +1,4 @@ +import time """Early stopping iterators The idea here is to supply early-stopping heuristics that can be used in the @@ -65,12 +66,14 @@ return ICML08Stopper(30*ntrain/batchsize, ntrain/batchsize, 0.96, 2.0, 100000000) - def __init__(self, i_wait, v_int, min_improvement, patience, hard_limit): + def __init__(self, i_wait, v_int, min_improvement, patience, hard_limit, hard_time_limit=None): self.initial_wait = i_wait self.set_score_interval = v_int self.min_improvement = min_improvement self.patience = patience self.hard_limit = hard_limit + self.hard_limit_seconds = hard_time_limit + self.start_time = time.time() self.best_score = float('inf') self.best_iter = -1 @@ -97,7 +100,8 @@ starting = self.iter < self.initial_wait waiting = self.iter < (self.patience * self.best_iter) - if starting or waiting: + times_up = (time.time() - self.start_time) > self.hard_limit_second if self.hard_limit_second != None else False + if (starting or waiting) and not times_up: # continue to iterate self.iter += 1 if self.iter == self.hard_limit: