Spaces:
Sleeping
Sleeping
| from abc import ABC, abstractmethod | |
| from typing import Dict | |
| import numpy as np | |
| from ibydmt.utils import _get_cls, _register_cls | |
| class Bet(ABC): | |
| def __init__(self): | |
| pass | |
| def compute(self, *args, **kwargs): | |
| pass | |
| _BETS: Dict[str, Bet] = {} | |
| def register_bet(name): | |
| return _register_cls(name, dict=_BETS) | |
| def get_bet(name): | |
| return _get_cls(name, dict=_BETS) | |
| class Sign(Bet): | |
| def __init__(self, config): | |
| super().__init__() | |
| self.m = config.get("m", 0.5) | |
| self.prev_g = [] | |
| def compute(self, g): | |
| return self.m * np.sign(g) | |
| class Tanh(Bet): | |
| def __init__(self, config): | |
| super().__init__() | |
| self.alpha = config.get("alpha", 0.20) | |
| self.prev_g = [] | |
| def compute(self, g): | |
| if len(self.prev_g) < 2: | |
| scale = 1 | |
| else: | |
| l, u = np.quantile(self.prev_g, [self.alpha / 2, 1 - self.alpha / 2]) | |
| scale = u - l | |
| self.prev_g.append(g) | |
| return np.tanh(g / np.clip(scale, 1e-04, None)) | |