"""对称对数归一化算子 symlog / symexp。 公式: symlog(x) = sign(x) * log(|x| + 1) symexp(y) = sign(y) * (exp(|y|) - 1) 用于运动学 / 坐标 / 内外参的归一化,使大幅值被压缩、保持可逆。 """ from __future__ import annotations import torch def symlog(x: torch.Tensor) -> torch.Tensor: """对称对数压缩:sign(x) * log(|x| + 1)。""" return torch.sign(x) * torch.log1p(torch.abs(x)) def symexp(y: torch.Tensor) -> torch.Tensor: """symlog 的逆:sign(y) * (exp(|y|) - 1)。""" return torch.sign(y) * torch.expm1(torch.abs(y))