code: def unbiased_transform_pair(
      min_value: float, max_value: float, num_bins: int, tx: TxPair
  ) -> TxPair:
      """Create an unbiased value transformation pair.
  
      A pair of transformations, similar to 'muzero_pair' but where the
      non-linearity is applied to the bin locations rather than the scalar value.
  
      Args:
        min_value: minimum value of the discrete support in the transformed space.
        max_value: maximum value of the discrete support in the transformed space.
        num_bins: number of discrete bins used by the fixed support.
        tx: non-linear transformation to be applied to the bin locations.
  
      Returns:
        a transformation pair.
      """
      bins = tx.apply_inv(jnp.linspace(min_value, max_value, num_bins))
  
      apply_fn = functools.partial(
          transforms.transform_to_2hot_nonlinear, bins=bins
      )
      apply_inv_fn = functools.partial(
          transforms.transform_from_2hot_nonlinear, bins=bins
      )
  
      nonlinear_twohot_pair = TxPair(apply_fn, apply_inv_fn)
  
      return compose_tx(IDENTITY_PAIR, nonlinear_twohot_pair)
  
file_path: rlax/rlax/_src/nonlinear_bellman.py
imports: import collections
  import functools
  import chex
  import jax.numpy
  from rlax._src import base
  from rlax._src import multistep
  from rlax._src import transforms
label_desc: Use image node_id 4 for calling a global function with example usage: unbiased_transform_pair(min_value, max_value, num_bins, tx) and returns: compose_tx