class_docstr: The Parabolic kernel.
  
  ```none
  k(x, y) = 3 / 4 * amplitude * max(0, 1 - (||x_k - y_k|| / length_scale)**2)
  ```
  
  where the double-bars represent vector length (ie, Euclidean, or L2 norm).
  
  When `amplitude = 1` and `length_scale = 1`, this is the Epanechnikov kernel,
  which is often used for density estimation because of its optimality according
  to a notion of efficiency as
  `efficiency = sqrt(integral(u**2 k(u) du)) integral(k(u)**2 du)`. This
  optimality was first derived in a different context [1], and suggested for use
  in KDE by Epanechnikov in [2]. This is nicely summarized in [3], adjacent to
  Fig 3.1. The Epanechnikov kernel integrates to `1` over its support `[-1, 1]`.
  
  #### References
  
  [1] Hodges, Joseph L., and Erich L. Lehmann. "The efficiency of some
      nonparametric competitors of the $ t $-test." The Annals of Mathematical
      Statistics 27.2 (1956): 324-335.
  [2] Epanechnikov, Vassiliy A. "Non-parametric estimation of a multivariate
      probability density." Theory of Probability & Its Applications 14.1
      (1969): 153-158.
  [3] Silverman, Bernard W. Density estimation for statistics and data analysis.
      Vol. 26. CRC press, 1986.
class_docstr_tok: ["The","Parabolic","kernel",".","``","`","none","k","(","x",",","y",")","=","3","\/","4","*","amplitude","*","max","(","0",",","1","-","(","||x_k","-","y_k||","\/","length_scale",")","*","*","2",")","``","`","where","the","double-bars","represent","vector","length","(","ie",",","Euclidean",",","or","L2","norm",")",".","When","`","amplitude","=","1","`","and","`","length_scale","=","1","`",",","this","is","the","Epanechnikov","kernel",",","which","is","often","used","for","density","estimation","because","of","its","optimality","according","to","a","notion","of","efficiency","as","`","efficiency","=","sqrt","(","integral","(","u","*","*","2","k","(","u",")","du",")",")","integral","(","k","(","u",")","*","*","2","du",")","`",".","This","optimality","was","first","derived","in","a","different","context","[","1","]",",","and","suggested","for","use","in","KDE","by","Epanechnikov","in","[","2","]",".","This","is","nicely","summarized","in","[","3","]",",","adjacent","to","Fig","3.1",".","The","Epanechnikov","kernel","integrates","to","`","1","`","over","its","support","`","[","-1",",","1","]","`",".","#","#","#","#","References","[","1","]","Hodges",",","Joseph","L.",",","and","Erich","L.","Lehmann",".","``","The","efficiency","of","some","nonparametric","competitors","of","the","$","t","$","-test",".","''","The","Annals","of","Mathematical","Statistics","27.2","(","1956",")",":","324-335",".","[","2","]","Epanechnikov",",","Vassiliy","A",".","``","Non-parametric","estimation","of","a","multivariate","probability","density",".","''","Theory","of","Probability","&","Its","Applications","14.1","(","1969",")",":","153-158",".","[","3","]","Silverman",",","Bernard","W.","Density","estimation","for","statistics","and","data","analysis",".","Vol",".","26",".","CRC","press",",","1986","."]
docstr: Construct a Parabolic kernel instance.
  
  Args:
    amplitude: Positive floating point `Tensor` that controls the maximum
      value of the kernel. Must be broadcastable with `period`, `length_scale`
      and inputs to `apply` and `matrix` methods. A value of `None` is treated
      like 1.
    length_scale: Positive floating point `Tensor` that controls how sharp or
      wide the kernel shape is. This provides a characteristic "unit" of
      length against which `|x - y|` can be compared for scale. Must be
      broadcastable with `amplitude`, `period`  and inputs to `apply` and
      `matrix` methods. A value of `None` is treated like 1.
    feature_ndims: Python `int` number of rightmost dims to include in kernel
      computation.
    validate_args: If `True`, parameters are checked for validity despite
      possibly degrading runtime performance
    name: Python `str` name prefixed to Ops created by this class.
docstr_tok: ["Construct","a","Parabolic","kernel","instance",".","Args",":","amplitude",":","Positive","floating","point","`","Tensor","`","that","controls","the","maximum","value","of","the","kernel",".","Must","be","broadcastable","with","`","period","`",",","`","length_scale","`","and","inputs","to","`","apply","`","and","`","matrix","`","methods",".","A","value","of","`","None","`","is","treated","like","1.","length_scale",":","Positive","floating","point","`","Tensor","`","that","controls","how","sharp","or","wide","the","kernel","shape","is",".","This","provides","a","characteristic","``","unit","''","of","length","against","which","`","|x","-","y|","`","can","be","compared","for","scale",".","Must","be","broadcastable","with","`","amplitude","`",",","`","period","`","and","inputs","to","`","apply","`","and","`","matrix","`","methods",".","A","value","of","`","None","`","is","treated","like","1.","feature_ndims",":","Python","`","int","`","number","of","rightmost","dims","to","include","in","kernel","computation",".","validate_args",":","If","`","True","`",",","parameters","are","checked","for","validity","despite","possibly","degrading","runtime","performance","name",":","Python","`","str","`","name","prefixed","to","Ops","created","by","this","class","."]
code: def __init__(
      self,
      amplitude=None,
      length_scale=None,
      feature_ndims=1,
      validate_args=False,
      name="Parabolic",
  ):
      """Construct a Parabolic kernel instance.
  
      Args:
        amplitude: Positive floating point `Tensor` that controls the maximum
          value of the kernel. Must be broadcastable with `period`, `length_scale`
          and inputs to `apply` and `matrix` methods. A value of `None` is treated
          like 1.
        length_scale: Positive floating point `Tensor` that controls how sharp or
          wide the kernel shape is. This provides a characteristic "unit" of
          length against which `|x - y|` can be compared for scale. Must be
          broadcastable with `amplitude`, `period`  and inputs to `apply` and
          `matrix` methods. A value of `None` is treated like 1.
        feature_ndims: Python `int` number of rightmost dims to include in kernel
          computation.
        validate_args: If `True`, parameters are checked for validity despite
          possibly degrading runtime performance
        name: Python `str` name prefixed to Ops created by this class.
      """
      parameters = dict(locals())
      with tf.name_scope(name):
          dtype = util.maybe_get_common_dtype([amplitude, length_scale])
          self._amplitude = tensor_util.convert_nonref_to_tensor(
              amplitude, name="amplitude", dtype=dtype
          )
          self._length_scale = tensor_util.convert_nonref_to_tensor(
              length_scale, name="length_scale", dtype=dtype
          )
          super(Parabolic, self).__init__(
              feature_ndims,
              dtype=dtype,
              name=name,
              validate_args=validate_args,
              parameters=parameters,
          )
  
file_path: probability/tensorflow_probability/python/math/psd_kernels/parabolic.py
imports: import tensorflow.compat.v2
  from tensorflow_probability.python.internal import assert_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import parameter_properties
  from tensorflow_probability.python.internal import tensor_util
  from tensorflow_probability.python.math.psd_kernels import positive_semidefinite_kernel
  from tensorflow_probability.python.math.psd_kernels.internal import util
label_desc: Use image node_id 1 to create a new Parabolic object from inherited base classes: psd_kernel with example: obj = Parabolic(amplitude, length_scale, feature_ndims, validate_args, name)