class_docstr: Exponential Curve Kernel.
  
  This kernel is defined as over positive real numbers as:
  
  ```none
  k(x, y) = int_0^inf exp(-s * x) exp(-s * y) GammaPDF(c, r)
  ```
  where:
    * `GammaPDF` is the pdf of the Gamma distribution.
    * `c` is the concentration parameter of the Gamma distribution.
    * `r` is the rate parameter of the Gamma distribution.
  
  See equation 6 in https://arxiv.org/pdf/1406.3896.pdf
  
  When parameterizing a 1-dimensional Gaussian Process, this kernel produces
  samples that strongly favor exponential functions.
  
  When called on multiple feature dimensions, all feature dimensions are added
  together before the kernel function is applied.
class_docstr_tok: ["Exponential","Curve","Kernel",".","This","kernel","is","defined","as","over","positive","real","numbers","as",":","``","`","none","k","(","x",",","y",")","=","int_0^inf","exp","(","-s","*","x",")","exp","(","-s","*","y",")","GammaPDF","(","c",",","r",")","``","`","where",":","*","`","GammaPDF","`","is","the","pdf","of","the","Gamma","distribution",".","*","`","c","`","is","the","concentration","parameter","of","the","Gamma","distribution",".","*","`","r","`","is","the","rate","parameter","of","the","Gamma","distribution",".","See","equation","6","in","https",":","\/\/arxiv.org\/pdf\/1406.3896.pdf","When","parameterizing","a","1-dimensional","Gaussian","Process",",","this","kernel","produces","samples","that","strongly","favor","exponential","functions",".","When","called","on","multiple","feature","dimensions",",","all","feature","dimensions","are","added","together","before","the","kernel","function","is","applied","."]
code: def __init__(
      self,
      concentration,
      rate,
      feature_ndims=1,
      validate_args=False,
      name="ExponentialCurve",
  ):
      # These are the concentration and rate parameters of the Gamma distribution.
      # The kernel is defined as the integral of exp(-s (t + t')) over s drawn
      # from a gamma distribution.
      parameters = dict(locals())
      dtype = util.maybe_get_common_dtype([concentration, rate])
      self._concentration = tensor_util.convert_nonref_to_tensor(
          concentration, name="concentration", dtype=dtype
      )
      self._rate = tensor_util.convert_nonref_to_tensor(
          rate, name="rate", dtype=dtype
      )
      super(ExponentialCurve, self).__init__(
          feature_ndims=feature_ndims,
          dtype=dtype,
          name=name,
          validate_args=validate_args,
          parameters=parameters,
      )
  
file_path: probability/tensorflow_probability/python/math/psd_kernels/exponential_curve.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 ExponentialCurve object from inherited base classes: psd_kernel with example: obj = ExponentialCurve(concentration, rate, feature_ndims, validate_args, name)