code: def test_chained_transform(self):
      loc = 5
      scale = 0.1
  
      ch = ChainedTransform(
          transform_list=[
              ScaleTransform(
                  transform_args_fn=lambda *inputs: pt.constant(scale),
              ),
              ExpTransform(),
              LocTransform(
                  transform_args_fn=lambda *inputs: pt.constant(loc),
              ),
          ],
      )
  
      x = pt.random.multivariate_normal(np.zeros(3), np.eye(3))
      x_val = x.eval()
  
      x_val_forward = ch.forward(x_val, *x.owner.inputs).eval()
      np.testing.assert_allclose(
          x_val_forward,
          np.exp(x_val * scale) + loc,
      )
  
      x_val_backward = ch.backward(
          x_val_forward, *x.owner.inputs, scale, loc
      ).eval()
      np.testing.assert_allclose(
          x_val_backward,
          x_val,
      )
  
      log_jac_det = ch.log_jac_det(
          x_val_forward, *x.owner.inputs, scale, loc
      )
      np.testing.assert_allclose(
          pt.sum(log_jac_det).eval(),
          np.sum(-np.log(scale) - np.log(x_val_forward - loc)),
      )
  
imports: import numpy
  import pytensor
  import pytensor.tensor
  import pytest
  import scipy
  import scipy.special
  from pytensor.graph.basic import equal_computations
  from pymc.distributions.continuous import Cauchy, ChiSquared
  from pymc.logprob.basic import conditional_logp, icdf, logcdf, logp
  from pymc.logprob.transforms import ArccoshTransform, ArcsinhTransform, ArctanhTransform, ChainedTransform, CoshTransform, ErfcTransform, ErfcxTransform, ErfTransform, ExpTransform, LocTransform, LogTransform, ScaleTransform, SinhTransform, TanhTransform, Transform
  from pymc.logprob.utils import ParameterValueError
  from pymc.testing import Rplusbig, Vector, assert_no_rvs
  from tests.distributions.test_transform import check_jacobian_det
label_desc: Use image node_id 3 for calling the TestTransform obj's underlying member method code with example usage: obj.test_chained_transform() without return types