class_docstr: Input transformed kernel.
  
  Given a kernel `k` and function `f`, compute `k_{new}(x, y) = k(f(x), f(y))`.
  
  
  ### Examples
  
  ```python
  import tensorflow as tf
  import tensorflow_probability as tfp
  from tensorflow_probability.positive_semidefinite_kernel.internal import util
  tfpk = tfp.math.psd_kernels
  
  base_kernel = tfpk.ExponentiatedQuadratic(amplitude=2., length_scale=1.)
  ```
  
  - Identity function.
  
  ```python
  # This is the same as base_kernel
  same_kernel = tfpk.FeatureTransformed(
      base_kernel,
      transformation_fn=lambda x, _, _: x)
  ```
  
  - Exponential transformation.
  
  ```python
  exp_kernel = tfpk.FeatureTransformed(
      base_kernel,
      transformation_fn=lambda x, _, _: tf.exp(x))
  ```
  
  - Transformation with broadcasting parameters.
  
  ```python
  # Exponentiate inputs
  
  p = np.random.uniform(low=2., high=3., size=[10, 2])
  def inputs_to_power(x, feature_ndims, param_expansion_ndims):
    # Make sure we account for extra feature dimensions for
    # broadcasting purposes.
    power = util.pad_shape_with_ones(
        p,
        ndims=feature_ndims + param_expansion_ndims,
        start=-(feature_ndims + 1))
    return x ** power
  
  power_kernel = tfpk.FeatureTransformed(
    base_kernel, transformation_fn=inputs_to_power)
docstr: Construct an FeatureTransformed kernel instance.
  
  Args:
    kernel: `PositiveSemidefiniteKernel` instance. Inputs are transformed and
      passed in to this kernel. Parameters to `kernel` must be broadcastable
      with parameters of `transformation_fn`.
    transformation_fn: Callable. `transformation_fn` takes in an input
      `Tensor`, a Python integer representing the number of feature
      dimensions, and a Python integer representing the
      `param_expansion_ndims` arg of `_apply`. Computations in
      `transformation_fn` must be broadcastable with parameters of `kernel`.
    validate_args: If `True`, parameters are checked for validity despite
      possibly degrading runtime performance
    parameters: When subclassing, a dict of constructor arguments.
    name: Python `str` name prefixed to Ops created by this class.
docstr_tok: ["Construct","an","FeatureTransformed","kernel","instance",".","Args",":","kernel",":","`","PositiveSemidefiniteKernel","`","instance",".","Inputs","are","transformed","and","passed","in","to","this","kernel",".","Parameters","to","`","kernel","`","must","be","broadcastable","with","parameters","of","`","transformation_fn","`",".","transformation_fn",":","Callable",".","`","transformation_fn","`","takes","in","an","input","`","Tensor","`",",","a","Python","integer","representing","the","number","of","feature","dimensions",",","and","a","Python","integer","representing","the","`","param_expansion_ndims","`","arg","of","`","_apply","`",".","Computations","in","`","transformation_fn","`","must","be","broadcastable","with","parameters","of","`","kernel","`",".","validate_args",":","If","`","True","`",",","parameters","are","checked","for","validity","despite","possibly","degrading","runtime","performance","parameters",":","When","subclassing",",","a","dict","of","constructor","arguments",".","name",":","Python","`","str","`","name","prefixed","to","Ops","created","by","this","class","."]
code: def __init__(
      self,
      kernel,
      transformation_fn,
      validate_args=False,
      parameters=None,
      name="FeatureTransformed",
  ):
      """Construct an FeatureTransformed kernel instance.
  
      Args:
        kernel: `PositiveSemidefiniteKernel` instance. Inputs are transformed and
          passed in to this kernel. Parameters to `kernel` must be broadcastable
          with parameters of `transformation_fn`.
        transformation_fn: Callable. `transformation_fn` takes in an input
          `Tensor`, a Python integer representing the number of feature
          dimensions, and a Python integer representing the
          `param_expansion_ndims` arg of `_apply`. Computations in
          `transformation_fn` must be broadcastable with parameters of `kernel`.
        validate_args: If `True`, parameters are checked for validity despite
          possibly degrading runtime performance
        parameters: When subclassing, a dict of constructor arguments.
        name: Python `str` name prefixed to Ops created by this class.
      """
      parameters = dict(locals()) if parameters is None else parameters
      with tf.name_scope(name):
          self._kernel = kernel
          self._transformation_fn = transformation_fn
          super(FeatureTransformed, self).__init__(
              feature_ndims=kernel.feature_ndims,
              dtype=kernel.dtype,
              name=name,
              validate_args=validate_args,
              parameters=parameters,
          )
  
file_path: probability/tensorflow_probability/python/math/psd_kernels/feature_transformed.py
imports: import tensorflow.compat.v2
  from tensorflow_probability.python.math.psd_kernels import positive_semidefinite_kernel
label_desc: Use image node_id 1 to create a new FeatureTransformed object from inherited base classes: psd_kernel with example: obj = FeatureTransformed(kernel, transformation_fn, validate_args, parameters, name)