class_docstr: Gamma distribution.
  
  The Gamma distribution is defined over positive real numbers using
  parameters `concentration` (aka "alpha") and `rate` (aka "beta").
  
  #### Mathematical Details
  
  The probability density function (pdf) is,
  
  ```none
  pdf(x; alpha, beta, x > 0) = x**(alpha - 1) exp(-x beta) / Z
  Z = Gamma(alpha) beta**(-alpha)
  ```
  
  where:
  
  * `concentration = alpha`, `alpha > 0`,
  * `rate = beta`, `beta > 0`,
  * `Z` is the normalizing constant, and,
  * `Gamma` is the [gamma function](
    https://en.wikipedia.org/wiki/Gamma_function).
  
  The cumulative density function (cdf) is,
  
  ```none
  cdf(x; alpha, beta, x > 0) = GammaInc(alpha, beta x) / Gamma(alpha)
  ```
  
  where `GammaInc` is the [lower incomplete Gamma function](
  https://en.wikipedia.org/wiki/Incomplete_gamma_function).
  
  The parameters can be intuited via their relationship to mean and stddev,
  
  ```none
  concentration = alpha = (mean / stddev)**2
  rate = beta = mean / stddev**2 = concentration / mean
  ```
  
  Distribution parameters are automatically broadcast in all functions; see
  examples for details.
  
  Warning: The samples of this distribution are always non-negative. However,
  the samples that are smaller than `np.finfo(dtype).tiny` are rounded
  to this value, so it appears more often than it should.
  This should only be noticeable when the `concentration` is very small, or the
  `rate` is very large. See note in `tf.random.gamma` docstring. To avoid this
  hazard, consider `tfp.distributions.ExpGamma`.
  
  Samples of this distribution are reparameterized (pathwise differentiable).
  The derivatives are computed using the approach described in the paper
  
  [Michael Figurnov, Shakir Mohamed, Andriy Mnih.
  Implicit Reparameterization Gradients, 2018](https://arxiv.org/abs/1805.08498)
  
  #### Examples
  
  ```python
  import tensorflow_probability as tfp
  tfd = tfp.distributions
  
  dist = tfd.Gamma(concentration=3.0, rate=2.0)
  dist2 = tfd.Gamma(concentration=[3.0, 4.0], rate=[2.0, 3.0])
  
  # Build a Gamma distribution equivalent to `dist`, parameterized by mean and
  # variance.
  dist_from_mean_var = tfd.Gamma.experimental_from_mean_variance(
    mean=1.5, variance=0.75)
  ```
  
  Compute the gradients of samples w.r.t. the parameters:
  
  ```python
  concentration = tf.constant(3.0)
  rate = tf.constant(2.0)
  dist = tfd.Gamma(concentration, rate)
  samples = dist.sample(5)  # Shape [5]
  loss = tf.reduce_mean(tf.square(samples))  # Arbitrary loss function
  # Unbiased stochastic gradients of the loss function
  grads = tf.gradients(loss, [concentration, rate])
  ```
class_docstr_tok: ["Gamma","distribution",".","The","Gamma","distribution","is","defined","over","positive","real","numbers","using","parameters","`","concentration","`","(","aka","``","alpha","''",")","and","`","rate","`","(","aka","``","beta","''",")",".","#","#","#","#","Mathematical","Details","The","probability","density","function","(","pdf",")","is",",","``","`","none","pdf","(","x",";","alpha",",","beta",",","x",">","0",")","=","x","*","*","(","alpha","-","1",")","exp","(","-x","beta",")","\/","Z","Z","=","Gamma","(","alpha",")","beta","*","*","(","-alpha",")","``","`","where",":","*","`","concentration","=","alpha","`",",","`","alpha",">","0","`",",","*","`","rate","=","beta","`",",","`","beta",">","0","`",",","*","`","Z","`","is","the","normalizing","constant",",","and",",","*","`","Gamma","`","is","the","[","gamma","function","]","(","https",":","\/\/en.wikipedia.org\/wiki\/Gamma_function",")",".","The","cumulative","density","function","(","cdf",")","is",",","``","`","none","cdf","(","x",";","alpha",",","beta",",","x",">","0",")","=","GammaInc","(","alpha",",","beta","x",")","\/","Gamma","(","alpha",")","``","`","where","`","GammaInc","`","is","the","[","lower","incomplete","Gamma","function","]","(","https",":","\/\/en.wikipedia.org\/wiki\/Incomplete_gamma_function",")",".","The","parameters","can","be","intuited","via","their","relationship","to","mean","and","stddev",",","``","`","none","concentration","=","alpha","=","(","mean","\/","stddev",")","*","*","2","rate","=","beta","=","mean","\/","stddev","*","*","2","=","concentration","\/","mean","``","`","Distribution","parameters","are","automatically","broadcast","in","all","functions",";","see","examples","for","details",".","Warning",":","The","samples","of","this","distribution","are","always","non-negative",".","However",",","the","samples","that","are","smaller","than","`","np.finfo","(","dtype",")",".tiny","`","are","rounded","to","this","value",",","so","it","appears","more","often","than","it","should",".","This","should","only","be","noticeable","when","the","`","concentration","`","is","very","small",",","or","the","`","rate","`","is","very","large",".","See","note","in","`","tf.random.gamma","`","docstring",".","To","avoid","this","hazard",",","consider","`","tfp.distributions.ExpGamma","`",".","Samples","of","this","distribution","are","reparameterized","(","pathwise","differentiable",")",".","The","derivatives","are","computed","using","the","approach","described","in","the","paper","[","Michael","Figurnov",",","Shakir","Mohamed",",","Andriy","Mnih",".","Implicit","Reparameterization","Gradients",",","2018","]","(","https",":","\/\/arxiv.org\/abs\/1805.08498",")","#","#","#","#","Examples","``","`","python","import","tensorflow_probability","as","tfp","tfd","=","tfp.distributions","dist","=","tfd.Gamma","(","concentration=3.0",",","rate=2.0",")","dist2","=","tfd.Gamma","(","concentration=","[","3.0",",","4.0","]",",","rate=","[","2.0",",","3.0","]",")","#","Build","a","Gamma","distribution","equivalent","to","`","dist","`",",","parameterized","by","mean","and","#","variance",".","dist_from_mean_var","=","tfd.Gamma.experimental_from_mean_variance","(","mean=1.5",",","variance=0.75",")","``","`","Compute","the","gradients","of","samples","w.r.t",".","the","parameters",":","``","`","python","concentration","=","tf.constant","(","3.0",")","rate","=","tf.constant","(","2.0",")","dist","=","tfd.Gamma","(","concentration",",","rate",")","samples","=","dist.sample","(","5",")","#","Shape","[","5","]","loss","=","tf.reduce_mean","(","tf.square","(","samples",")",")","#","Arbitrary","loss","function","#","Unbiased","stochastic","gradients","of","the","loss","function","grads","=","tf.gradients","(","loss",",","[","concentration",",","rate","]",")","``","`"]
code: def _cdf(self, x):
      # Note that igamma returns the regularized incomplete gamma function,
      # which is what we want for the CDF.
      cdf = tf.math.igamma(
          self.concentration, self._rate_parameter() * x
      )
      return distribution_util.extend_cdf_outside_support(
          x, cdf, low=0.0
      )
  
imports: import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.distributions import distribution
  from tensorflow_probability.python.distributions import kullback_leibler
  from tensorflow_probability.python.internal import assert_util
  from tensorflow_probability.python.internal import batched_rejection_sampler
  from tensorflow_probability.python.internal import custom_gradient
  from tensorflow_probability.python.internal import distribution_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import implementation_selection
  from tensorflow_probability.python.internal import parameter_properties
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import reparameterization
  from tensorflow_probability.python.internal import samplers
  from tensorflow_probability.python.internal import tensor_util
  from tensorflow_probability.python.internal import tensorshape_util
  from tensorflow_probability.python.math import generic
  from tensorflow_probability.python.math import special
  from tensorflow_probability.python.util.deferred_tensor import DeferredTensor
label_desc: Use image node_id 14 for calling the Gamma obj's underlying member method code with example usage: obj._cdf(x) and returns: distribution_util