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