Source code for jet20.backend.core.utils

from functools import wraps
from time import time

import logging
logger = logging.getLogger(__name__)


[docs]def timeit(f): @wraps(f) def wrap(*args, **kw): ts = time() result = f(*args, **kw) te = time() logger.debug('func:%s took: %2.4f sec',f.__name__,te-ts) return result return wrap
[docs]class NotImproving(object): def __init__(self,episilon=0.0,max_count=1): super(NotImproving,self).__init__() self.episilon = episilon self.max_count = max_count self.last_norm = None self.count = 0 def __call__(self,norm): if self.last_norm is None: self.last_norm = norm return False if self.last_norm - norm <= self.episilon: self.count += 1 else: self.count = 0 if self.count >= self.max_count: return True self.last_norm = norm return False