Rate this Page

SignedHyperbolicValueTransform#

class torchrl.modules.SignedHyperbolicValueTransform(epsilon: float = 0.001)[source]#

Signed-hyperbolic transform for large-magnitude value targets.

Parameters:

epsilon (float, optional) – Positive linear correction that keeps the inverse Lipschitz continuous. Defaults to 1e-3.

Examples

>>> import torch
>>> from torchrl.modules import SignedHyperbolicValueTransform
>>> transform = SignedHyperbolicValueTransform(epsilon=1e-3)
>>> value = torch.tensor([-100.0, 0.0, 100.0])
>>> transformed = transform(value)
>>> transformed
tensor([-9.1499,  0.0000,  9.1499])
>>> transform.inverse(transformed)
tensor([-100.0000,    0.0000,  100.0000])

See also

torchrl.modules.functional.signed_hyperbolic() and torchrl.modules.functional.signed_parabolic() for the functional form, and SymLogValueTransform for an alternative nonlinear transform.

forward(value: Tensor) Tensor[source]#

Apply the signed-hyperbolic transform to value.

inverse(value: Tensor) Tensor[source]#

Apply the signed-parabolic inverse to value.