| 485 | |
| 486 | |
| 487 | class BestMetricSingle(): |
| 488 | def __init__(self, init_res=0.0, better='large') -> None: |
| 489 | self.init_res = init_res |
| 490 | self.best_res = init_res |
| 491 | self.best_ep = -1 |
| 492 | |
| 493 | self.better = better |
| 494 | assert better in ['large', 'small'] |
| 495 | |
| 496 | def isbetter(self, new_res, old_res): |
| 497 | if self.better == 'large': |
| 498 | return new_res > old_res |
| 499 | if self.better == 'small': |
| 500 | return new_res < old_res |
| 501 | |
| 502 | def update(self, new_res, ep): |
| 503 | if self.isbetter(new_res, self.best_res): |
| 504 | self.best_res = new_res |
| 505 | self.best_ep = ep |
| 506 | return True |
| 507 | return False |
| 508 | |
| 509 | def __str__(self) -> str: |
| 510 | return 'best_res: {}\t best_ep: {}'.format(self.best_res, self.best_ep) |
| 511 | |
| 512 | def __repr__(self) -> str: |
| 513 | return self.__str__() |
| 514 | |
| 515 | def summary(self) -> dict: |
| 516 | return { |
| 517 | 'best_res': self.best_res, |
| 518 | 'best_ep': self.best_ep, |
| 519 | } |
| 520 | |
| 521 | |
| 522 | class BestMetricHolder(): |