Source code for bayesflow.adapters.transforms.log

import numpy as np
from keras.saving import (
    deserialize_keras_object as deserialize,
    register_keras_serializable as serializable,
    serialize_keras_object as serialize,
)

from .elementwise_transform import ElementwiseTransform


[docs] @serializable(package="bayesflow.adapters") class Log(ElementwiseTransform): """Log transforms a variable. Parameters ---------- p1 : boolean Add 1 to the input before taking the logarithm? Examples -------- >>> adapter = bf.Adapter().log(["x"]) """ def __init__(self, *, p1: bool = False): super().__init__() self.p1 = p1
[docs] def forward(self, data: np.ndarray, **kwargs) -> np.ndarray: if self.p1: return np.log1p(data) else: return np.log(data)
[docs] def inverse(self, data: np.ndarray, **kwargs) -> np.ndarray: if self.p1: return np.expm1(data) else: return np.exp(data)
[docs] @classmethod def from_config(cls, config: dict, custom_objects=None) -> "Log": return cls( p1=deserialize(config["p1"], custom_objects), )
[docs] def get_config(self) -> dict: return { "p1": serialize(self.p1), }