code: def feature_transformeds(
      draw,
      batch_shape=None,
      event_dim=None,
      feature_dim=None,
      feature_ndims=None,
      enable_vars=None,
      depth=None,
  ):
      """Strategy for drawing `FeatureTransformed` kernels.
  
      The underlying kernel is drawn from the `kernels` strategy.
  
      Args:
        draw: Hypothesis strategy sampler supplied by `@hps.composite`.
        batch_shape: An optional `TensorShape`.  The batch shape of the resulting
          Kernel.  Hypothesis will pick a batch shape if omitted.
        event_dim: Optional Python int giving the size of each of the
          kernel's parameters' event dimensions.  This is shared across all
          parameters, permitting square event matrices, compatible location and
          scale Tensors, etc. If omitted, Hypothesis will choose one.
        feature_dim: Optional Python int giving the size of each feature dimension.
          If omitted, Hypothesis will choose one.
        feature_ndims: Optional Python int stating the number of feature dimensions
          inputs will have. If omitted, Hypothesis will choose one.
        enable_vars: TODO(bjp): Make this `True` all the time and put variable
          initialization in slicing_test.  If `False`, the returned parameters are
          all Tensors, never Variables or DeferredTensor.
        depth: Python `int` giving maximum nesting depth of compound kernel.
  
      Returns:
        kernels: A strategy for drawing `FeatureTransformed` kernels with the
          specified `batch_shape` (or an arbitrary one if omitted).
      """
      if depth is None:
          depth = draw(depths())
      if batch_shape is None:
          batch_shape = draw(tfp_hps.shapes())
      if event_dim is None:
          event_dim = draw(hps.integers(min_value=2, max_value=6))
      if feature_dim is None:
          feature_dim = draw(hps.integers(min_value=2, max_value=6))
      if feature_ndims is None:
          feature_ndims = draw(hps.integers(min_value=2, max_value=6))
  
      base_kernel, kernel_variable_names = draw(
          kernels(
              batch_shape=batch_shape,
              event_dim=event_dim,
              feature_dim=feature_dim,
              feature_ndims=feature_ndims,
              enable_vars=enable_vars,
              depth=depth - 1,
          )
      )
  
      hp.note("Forming FeatureTransformed kernel")
  
      result_kernel = tfpk.FeatureTransformed(
          kernel=base_kernel,
          transformation_fn=lambda x, feature_ndims, example_ndims: x
          ** 2.0,
          validate_args=True,
      )
  
      return result_kernel, kernel_variable_names
  
imports: import collections
  import contextlib
  import inspect
  import logging
  import re
  import hypothesis
  from hypothesis.extra import numpy
  import hypothesis.strategies
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.experimental.distributions import marginal_fns
  from tensorflow_probability.python.internal import hypothesis_testlib
  from tensorflow_probability.python.internal import parameter_properties
  from tensorflow_probability.python.internal import tensor_util
  from tensorflow_probability.python.internal import tensorshape_util
  from tensorflow_probability.python.math import psd_kernels
label_desc: Use image node_id 8 for calling a global function with example usage: feature_transformeds(draw, batch_shape, event_dim, feature_dim, feature_ndims, enable_vars, depth) and returns: result_kernel,  kernel_variable_names