def _maybe_write_metric(self, metric_key: str, metric_val: Any, step: int) -> None: # For now, we only log scalar metrics. if not util.is_numerical_scalar(metric_val): return self.writer.add_scalar("Determined/" + metric_key, metric_val, step)
def test_is_numerical_scalar() -> None: assert metric_writers_util.is_numerical_scalar(1) assert metric_writers_util.is_numerical_scalar(1.0) assert metric_writers_util.is_numerical_scalar(-3.14) assert metric_writers_util.is_numerical_scalar(np.ones(shape=())) assert metric_writers_util.is_numerical_scalar(np.array(1)) assert metric_writers_util.is_numerical_scalar(np.array(-3.14)) assert metric_writers_util.is_numerical_scalar(np.array([1.0])[0])
def test_is_not_numerical_scalar() -> None: # Invalid types assert not metric_writers_util.is_numerical_scalar("foo") assert not metric_writers_util.is_numerical_scalar(np.array("foo")) assert not metric_writers_util.is_numerical_scalar(object()) # Invalid shapes assert not metric_writers_util.is_numerical_scalar([1]) assert not metric_writers_util.is_numerical_scalar(np.array([3.14])) assert not metric_writers_util.is_numerical_scalar(np.ones(shape=(5, 5)))