Source code for liesel.bijectors.algebraic_sigmoid

"""
An algebraic sigmoid bijector.
"""

import jax.numpy as np
import tensorflow_probability.substrates.jax.bijectors as tfb


[docs] class AlgebraicSigmoid(tfb.Bijector): """ The algebraic sigmoid bijector ``f(x) = x / sqrt(1 + x**2)``. """ def __init__(self, validate_args=False, name="algebraic_sigmoid"): parameters = dict(locals()) super().__init__( forward_min_event_ndims=0, validate_args=validate_args, parameters=parameters, name=name, ) def _forward(self, x): return x / np.sqrt(1.0 + x**2) def _inverse(self, y): return y / np.sqrt(1.0 - y**2) def _inverse_log_det_jacobian(self, y): return -1.5 * np.log(1.0 - y**2) def _forward_log_det_jacobian(self, x): return -1.5 * np.log(1.0 + x**2) @classmethod def _is_increasing(cls): return True