From 172207471c8f2cb62958e9a9e6a0535ba3ff67d4 Mon Sep 17 00:00:00 2001 From: Pepijn Date: Tue, 30 Sep 2025 11:50:00 +0200 Subject: [PATCH] clamp quantiles --- src/lerobot/processor/normalize_processor.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/lerobot/processor/normalize_processor.py b/src/lerobot/processor/normalize_processor.py index 0a2381cc2..c0877250f 100644 --- a/src/lerobot/processor/normalize_processor.py +++ b/src/lerobot/processor/normalize_processor.py @@ -375,8 +375,11 @@ class _NormalizationMixin: denom == 0, torch.tensor(self.eps, device=tensor.device, dtype=tensor.dtype), denom ) if inverse: + tensor = torch.clamp(tensor, -1.0, 1.0) return tensor * denom + q01 - return 2.0 * (tensor - q01) / denom - 1.0 + result = 2.0 * (tensor - q01) / denom - 1.0 + result = torch.clamp(result, -1.0, 1.0) + return result if norm_mode == NormalizationMode.QUANTILE10: q10 = stats.get("q10", None) @@ -392,8 +395,11 @@ class _NormalizationMixin: denom == 0, torch.tensor(self.eps, device=tensor.device, dtype=tensor.dtype), denom ) if inverse: + tensor = torch.clamp(tensor, -1.0, 1.0) return tensor * denom + q10 - return 2.0 * (tensor - q10) / denom - 1.0 + result = 2.0 * (tensor - q10) / denom - 1.0 + result = torch.clamp(result, -1.0, 1.0) + return result # If necessary stats are missing, return input unchanged. return tensor