@tensorleap_custom_metric
code_loader.inner_leap_binder.leapbinder_decorators.tensorleap_preprocess.tensorleap_custom_metric
The purpose of the tensorleap_custom_metric
decorator is to add a custom metric suited to your needs to the tensorleap platform.
@tensorleap_custom_metric(name='metrics',
direction=MetricDirection.Downward,
compute_insights=None)
def metrics(
tensor_1: npt.NDArray[np.float32],
tensor_2: npt.NDArray[np.float32],
...
) -> Union[npt.NDArray[np.float32], Dict[str, npt.NDArray[np.float32]]]:
pass
name
The name of the the metric
direction
(optional, defaults toMetricDirection.Downward
)
For a metric where lower values are better use
MetricDirection.Downward
For a metric where higher values are better use
MetricDirection.Upwards
compute_insights
(optional, defaults to None). Specify metrics that should not have insights computed on them:
in case the metric function returns a dictionary, compute_insights should return a dictionary as well, mapping metric names to booleans.
otherwise, compute_insights=False if this metric should be ommited when computing insights
Metric inputs:
np.ndarray tensors with a batch dimension
Metric outputs:
np.ndarray batched metric values
Examples
Basic Usage
import numpy as np
import numpy.typing as npt
def custom_metric_distances(
y_true: npt.NDArray[np.float32],
y_pred: npt.NDArray[np.float32]
) -> dict[str, npt.NDArray[np.float32]]:
diff = y_true - y_pred
axis = tuple(range(1, diff.ndim))
return {
"mean_difference": np.mean(diff, axis=axis),
"mean_absolute_difference": np.mean(np.abs(diff), axis=axis)
}
Full script usage can be found at Integration Script.
Last updated
Was this helpful?