# Classes for statistical distributions.

Classes that represent batches of statistical distributions. Each class is initialized with parameters that define the distributions.

### class tf.contrib.distributions.Distribution

A generic probability distribution base class.

Distribution is a base class for constructing and organizing properties (e.g., mean, variance) of random variables (e.g, Bernoulli, Gaussian).

### Subclassing

Subclasess are expected to implement a leading-underscore version of the same-named function. The argument signature should be identical except for the omission of name="...". For example, to enable log_prob(value, name="log_prob") a subclass should implement _log_prob(value).

Subclasses can rewrite/append to public-level docstrings. For example,

Subclass.prob.__func__.__doc__ += "Some other details."


would add the string "Some other details." to the prob function docstring.

All distributions support batches of independent distributions of that type. The batch shape is determined by broadcasting together the parameters.

The shape of arguments to __init__, cdf, log_cdf, prob, and log_prob reflect this broadcasting, as does the return value of sample and sample_n.

sample_n_shape = (n,) + batch_shape + event_shape, where sample_n_shape is the shape of the Tensor returned from sample_n, n is the number of samples, batch_shape defines how many independent distributions there are, and event_shape defines the shape of samples from each of those independent distributions. Samples are independent along the batch_shape dimensions, but not necessarily so along the event_shape dimensions (dependending on the particulars of the underlying distribution).

Using the Uniform distribution as an example:

minval = 3.0
maxval = [[4.0, 6.0],
[10.0, 12.0]]

# This instance represents 4 Uniform distributions. Each has a lower bound at
# 3.0 as the minval parameter was broadcasted to match maxval's shape.
u = Uniform(minval, maxval)

# event_shape is TensorShape([]).
event_shape = u.get_event_shape()
# event_shape_t is a Tensor which will evaluate to [].
event_shape_t = u.event_shape

# Sampling returns a sample per distribution.  samples has shape
# (5, 2, 2), which is (n,) + batch_shape + event_shape, where n=5,
# batch_shape=(2, 2), and event_shape=().
samples = u.sample_n(5)

# The broadcasting holds across methods. Here we use cdf as an example. The
# same holds for log_cdf and the likelihood functions.

# cum_prob has shape (2, 2) as the value argument was broadcasted to the
# shape of the Uniform instance.

# cum_prob's shape is (2, 2), one per distribution. No broadcasting
# occurred.
cum_prob_per_dist = u.cdf([[4.0, 5.0],
[6.0, 7.0]])

# INVALID as the value argument is not broadcastable to the distribution's
# shape.
cum_prob_invalid = u.cdf([4.0, 5.0, 6.0])

### Parameter values leading to undefined statistics or distributions.

Some distributions do not have well-defined statistics for all initialization
parameter values.  For example, the beta distribution is parameterized by
positive real numbers a and b, and does not have well-defined mode if
a < 1 or b < 1.

The user is given the option of raising an exception or returning NaN.

python
a = tf.exp(tf.matmul(logits, weights_a))
b = tf.exp(tf.matmul(logits, weights_b))

# Will raise exception if ANY batch member has a < 1 or b < 1.
dist = distributions.beta(a, b, allow_nan_stats=False)
mode = dist.mode().eval()

# Will return NaN for batch members with either a < 1 or b < 1.
dist = distributions.beta(a, b, allow_nan_stats=True)  # Default behavior
mode = dist.mode().eval()


In all cases, an exception is raised if invalid parameters are passed, e.g.

# Will raise an exception if any Op is run.
negative_a = -1.0 * a  # beta distribution by definition has a > 0.
dist = distributions.beta(negative_a, b, allow_nan_stats=True)
dist.mean().eval()


#### tf.contrib.distributions.Distribution.__init__(dtype, parameters, is_continuous, is_reparameterized, validate_args, allow_nan_stats, name=None) {:#Distribution.init}

Constructs the Distribution.

This is a private method for subclass use.

##### Args:
• dtype: The type of the event samples. None implies no type-enforcement.
• parameters: Python dictionary of parameters used by this Distribution.
• is_continuous: Python boolean. If True this Distribution is continuous over its supported domain.
• is_reparameterized: Python boolean. If True this Distribution can be reparameterized in terms of some standard distribution with a function whose Jacobian is constant for the support of the standard distribution.
• validate_args: Python boolean. Whether to validate input with asserts. If validate_args is False, and the inputs are invalid, correct behavior is not guaranteed.
• allow_nan_stats: Pytho nboolean. If False, raise an exception if a statistic (e.g., mean, mode) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: A name for this distribution (optional).

#### tf.contrib.distributions.Distribution.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.Distribution.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.Distribution.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Distribution.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.Distribution.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.Distribution.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.Distribution.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Distribution.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Distribution.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Distribution.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Distribution.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Distribution.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Distribution.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.Distribution.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.Distribution.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.Distribution.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.Distribution.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.Distribution.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Distribution.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Distribution.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Distribution.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.Distribution.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.Distribution.std(name='std')

Standard deviation.

#### tf.contrib.distributions.Distribution.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.Distribution.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.Binomial

Binomial distribution.

This distribution is parameterized by a vector p of probabilities and n, the total counts.

#### Mathematical details

The Binomial is a distribution over the number of successes in n independent trials, with each trial having the same probability of success p. The probability mass function (pmf):

pmf(k) = n! / (k! * (n - k)!) * (p)^k * (1 - p)^(n - k)

#### Examples

Create a single distribution, corresponding to 5 coin flips.

dist = Binomial(n=5., p=.5)


Create a single distribution (using logits), corresponding to 5 coin flips.

dist = Binomial(n=5., logits=0.)


Creates 3 distributions with the third distribution most likely to have successes.

p = [.2, .3, .8]
# n will be broadcast to [4., 4., 4.], to match p.
dist = Binomial(n=4., p=p)


The distribution functions can be evaluated on counts.

# counts same shape as p.
counts = [1., 2, 3]
dist.prob(counts)  # Shape [3]

# p will be broadcast to [[.2, .3, .8], [.2, .3, .8]] to match counts.
counts = [[1., 2, 1], [2, 2, 4]]
dist.prob(counts)  # Shape [2, 3]

# p will be broadcast to shape [5, 7, 3] to match counts.
counts = [[...]]  # Shape [5, 7, 3]
dist.prob(counts)  # Shape [5, 7, 3]


#### tf.contrib.distributions.Binomial.__init__(n, logits=None, p=None, validate_args=False, allow_nan_stats=True, name='Binomial') {:#Binomial.init}

Initialize a batch of Binomial distributions.

##### Args:
• n: Non-negative floating point tensor with shape broadcastable to [N1,..., Nm] with m >= 0 and the same dtype as p or logits. Defines this as a batch of N1 x ... x Nm different Binomial distributions. Its components should be equal to integer values.
• logits: Floating point tensor representing the log-odds of a positive event with shape broadcastable to [N1,..., Nm] m >= 0, and the same dtype as n. Each entry represents logits for the probability of success for independent Binomial distributions.
• p: Positive floating point tensor with shape broadcastable to [N1,..., Nm] m >= 0, p in [0, 1]. Each entry represents the probability of success for independent Binomial distributions.
• validate_args: Boolean, default False. Whether to assert valid values for parameters n, p, and x in prob and log_prob. If False and inputs are invalid, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name to prefix Ops created by this distribution class.

• Examples:

# Define 1-batch of a binomial distribution.
dist = Binomial(n=2., p=.9)

# Define a 2-batch.
dist = Binomial(n=[4., 5], p=[.1, .3])


#### tf.contrib.distributions.Binomial.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.Binomial.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.Binomial.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Binomial.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.Binomial.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.Binomial.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.Binomial.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Binomial.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Binomial.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Binomial.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Binomial.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Binomial.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Binomial.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Log-odds.

Mean.

Mode.

#### tf.contrib.distributions.Binomial.n

Number of trials.

#### tf.contrib.distributions.Binomial.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.Binomial.p

Probability of success.

#### tf.contrib.distributions.Binomial.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.Binomial.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.Binomial.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.Binomial.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Binomial.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Binomial.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Binomial.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.Binomial.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.Binomial.std(name='std')

Standard deviation.

#### tf.contrib.distributions.Binomial.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.Binomial.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.Bernoulli

Bernoulli distribution.

The Bernoulli distribution is parameterized by p, the probability of a positive event.

#### tf.contrib.distributions.Bernoulli.__init__(logits=None, p=None, dtype=tf.int32, validate_args=False, allow_nan_stats=True, name='Bernoulli') {:#Bernoulli.init}

Construct Bernoulli distributions.

##### Args:
• logits: An N-D Tensor representing the log-odds of a positive event. Each entry in the Tensor parametrizes an independent Bernoulli distribution where the probability of an event is sigmoid(logits).
• p: An N-D Tensor representing the probability of a positive event. Each entry in the Tensor parameterizes an independent Bernoulli distribution.
• dtype: dtype for samples.
• validate_args: Boolean, default False. Whether to validate that 0 <= p <= 1. If validate_args is False, and the inputs are invalid, methods like log_pmf may return NaN values.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: A name for this distribution.
##### Raises:
• ValueError: If p and logits are passed, or if neither are passed.

#### tf.contrib.distributions.Bernoulli.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.Bernoulli.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.Bernoulli.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Bernoulli.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.Bernoulli.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.Bernoulli.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.Bernoulli.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Bernoulli.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Bernoulli.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Bernoulli.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Bernoulli.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Bernoulli.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Bernoulli.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.Bernoulli.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.Bernoulli.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.Bernoulli.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.Bernoulli.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.Bernoulli.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Bernoulli.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Bernoulli.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

1-p.

#### tf.contrib.distributions.Bernoulli.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.Bernoulli.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.Bernoulli.std(name='std')

Standard deviation.

#### tf.contrib.distributions.Bernoulli.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.Bernoulli.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.Beta

Beta distribution.

This distribution is parameterized by a and b which are shape parameters.

#### Mathematical details

The Beta is a distribution over the interval (0, 1). The distribution has hyperparameters a and b and probability mass function (pdf):

pdf(x) = 1 / Beta(a, b) * x^(a - 1) * (1 - x)^(b - 1)

where Beta(a, b) = Gamma(a) * Gamma(b) / Gamma(a + b) is the beta function.

This class provides methods to create indexed batches of Beta distributions. One entry of the broacasted shape represents of a and b represents one single Beta distribution. When calling distribution functions (e.g. dist.pdf(x)), a, b and x are broadcast to the same shape (if possible). Every entry in a/b/x corresponds to a single Beta distribution.

#### Examples

Creates 3 distributions. The distribution functions can be evaluated on x.

a = [1, 2, 3]
b = [1, 2, 3]
dist = Beta(a, b)

# x same shape as a.
x = [.2, .3, .7]
dist.pdf(x)  # Shape [3]

# a/b will be broadcast to [[1, 2, 3], [1, 2, 3]] to match x.
x = [[.1, .4, .5], [.2, .3, .5]]
dist.pdf(x)  # Shape [2, 3]

# a/b will be broadcast to shape [5, 7, 3] to match x.
x = [[...]]  # Shape [5, 7, 3]
dist.pdf(x)  # Shape [5, 7, 3]


Creates a 2-batch of 3-class distributions.

a = [[1, 2, 3], [4, 5, 6]]  # Shape [2, 3]
b = 5  # Shape []
dist = Beta(a, b)

# x will be broadcast to [[.2, .3, .9], [.2, .3, .9]] to match a/b.
x = [.2, .3, .9]
dist.pdf(x)  # Shape [2]


#### tf.contrib.distributions.Beta.__init__(a, b, validate_args=False, allow_nan_stats=True, name='Beta') {:#Beta.init}

Initialize a batch of Beta distributions.

##### Args:
• a: Positive floating point tensor with shape broadcastable to [N1,..., Nm] m >= 0. Defines this as a batch of N1 x ... x Nm different Beta distributions. This also defines the dtype of the distribution.
• b: Positive floating point tensor with shape broadcastable to [N1,..., Nm] m >= 0. Defines this as a batch of N1 x ... x Nm different Beta distributions.
• validate_args: Boolean, default False. Whether to assert valid values for parameters a, b, and x in prob and log_prob. If False and inputs are invalid, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name to prefix Ops created by this distribution class.

• Examples:

# Define 1-batch.
dist = Beta(1.1, 2.0)

# Define a 2-batch.
dist = Beta([1.0, 2.0], [4.0, 5.0])


Shape parameter.

#### tf.contrib.distributions.Beta.a_b_sum

Sum of parameters.

#### tf.contrib.distributions.Beta.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

Shape parameter.

#### tf.contrib.distributions.Beta.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.Beta.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Beta.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.Beta.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.Beta.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.Beta.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Beta.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Beta.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Beta.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Beta.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Beta.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Beta.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.Beta.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.Beta.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.Beta.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.Beta.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.Beta.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Beta.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Beta.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Beta.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.Beta.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.Beta.std(name='std')

Standard deviation.

#### tf.contrib.distributions.Beta.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.Beta.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.Categorical

Categorical distribution.

The categorical distribution is parameterized by the log-probabilities of a set of classes.

#### tf.contrib.distributions.Categorical.__init__(logits, dtype=tf.int32, validate_args=False, allow_nan_stats=True, name='Categorical') {:#Categorical.init}

Initialize Categorical distributions using class log-probabilities.

##### Args:
• logits: An N-D Tensor, N >= 1, representing the log probabilities of a set of Categorical distributions. The first N - 1 dimensions index into a batch of independent distributions and the last dimension indexes into the classes.
• dtype: The type of the event samples (default: int32).
• validate_args: Unused in this distribution.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: A name for this distribution (optional).

#### tf.contrib.distributions.Categorical.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.Categorical.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.Categorical.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Categorical.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.Categorical.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.Categorical.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.Categorical.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Categorical.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Categorical.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Categorical.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Categorical.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Categorical.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Categorical.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.Categorical.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.Categorical.num_classes

Scalar int32 tensor: the number of classes.

#### tf.contrib.distributions.Categorical.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.Categorical.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.Categorical.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.Categorical.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Categorical.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Categorical.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Categorical.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.Categorical.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.Categorical.std(name='std')

Standard deviation.

#### tf.contrib.distributions.Categorical.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.Categorical.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.Chi2

The Chi2 distribution with degrees of freedom df.

The PDF of this distribution is:

pdf(x) = (x^(df/2 - 1)e^(-x/2))/(2^(df/2)Gamma(df/2)), x > 0

Note that the Chi2 distribution is a special case of the Gamma distribution, with Chi2(df) = Gamma(df/2, 1/2).

#### tf.contrib.distributions.Chi2.__init__(df, validate_args=False, allow_nan_stats=True, name='Chi2') {:#Chi2.init}

Construct Chi2 distributions with parameter df.

##### Args:
• df: Floating point tensor, the degrees of freedom of the distribution(s). df must contain only positive values.
• validate_args: Boolean, default False. Whether to assert that df > 0, and that x > 0 in the methods prob(x) and log_prob(x). If validate_args is False and the inputs are invalid, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name to prepend to all ops created by this distribution.

#### tf.contrib.distributions.Chi2.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

Shape parameter.

#### tf.contrib.distributions.Chi2.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.Chi2.beta

Inverse scale parameter.

#### tf.contrib.distributions.Chi2.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Chi2.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.Chi2.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.Chi2.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.Chi2.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Chi2.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Chi2.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Chi2.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Chi2.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Chi2.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Chi2.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.Chi2.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.Chi2.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.Chi2.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.Chi2.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.Chi2.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Chi2.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Chi2.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Chi2.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.Chi2.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.Chi2.std(name='std')

Standard deviation.

#### tf.contrib.distributions.Chi2.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.Chi2.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.Exponential

The Exponential distribution with rate parameter lam.

The PDF of this distribution is:

prob(x) = (lam * e^(-lam * x)), x > 0

Note that the Exponential distribution is a special case of the Gamma distribution, with Exponential(lam) = Gamma(1, lam).

#### tf.contrib.distributions.Exponential.__init__(lam, validate_args=False, allow_nan_stats=True, name='Exponential') {:#Exponential.init}

Construct Exponential distribution with parameter lam.

##### Args:
• lam: Floating point tensor, the rate of the distribution(s). lam must contain only positive values.
• validate_args: Boolean, default False. Whether to assert that lam > 0, and that x > 0 in the methods prob(x) and log_prob(x). If validate_args is False and the inputs are invalid, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name to prepend to all ops created by this distribution.

#### tf.contrib.distributions.Exponential.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

Shape parameter.

#### tf.contrib.distributions.Exponential.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.Exponential.beta

Inverse scale parameter.

#### tf.contrib.distributions.Exponential.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Exponential.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.Exponential.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.Exponential.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.Exponential.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Exponential.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Exponential.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Exponential.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Exponential.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Exponential.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Exponential.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.Exponential.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.Exponential.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.Exponential.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.Exponential.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.Exponential.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Exponential.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Exponential.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Exponential.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.Exponential.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.Exponential.std(name='std')

Standard deviation.

#### tf.contrib.distributions.Exponential.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.Exponential.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.Gamma

The Gamma distribution with parameter alpha and beta.

The parameters are the shape and inverse scale parameters alpha, beta.

The PDF of this distribution is:

pdf(x) = (beta^alpha)(x^(alpha-1))e^(-x*beta)/Gamma(alpha), x > 0

and the CDF of this distribution is:

cdf(x) = GammaInc(alpha, beta * x) / Gamma(alpha), x > 0

where GammaInc is the incomplete lower Gamma function.

WARNING: This distribution may draw 0-valued samples for small alpha values. See the note on tf.random_gamma.

Examples:

dist = Gamma(alpha=3.0, beta=2.0)
dist2 = Gamma(alpha=[3.0, 4.0], beta=[2.0, 3.0])


#### tf.contrib.distributions.Gamma.__init__(alpha, beta, validate_args=False, allow_nan_stats=True, name='Gamma') {:#Gamma.init}

Construct Gamma distributions with parameters alpha and beta.

The parameters alpha and beta must be shaped in a way that supports broadcasting (e.g. alpha + beta is a valid operation).

##### Args:
• alpha: Floating point tensor, the shape params of the distribution(s). alpha must contain only positive values.
• beta: Floating point tensor, the inverse scale params of the distribution(s). beta must contain only positive values.
• validate_args: Boolean, default False. Whether to assert that a > 0, b > 0, and that x > 0 in the methods prob(x) and log_prob(x). If validate_args is False and the inputs are invalid, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name to prepend to all ops created by this distribution.
##### Raises:
• TypeError: if alpha and beta are different dtypes.

#### tf.contrib.distributions.Gamma.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

Shape parameter.

#### tf.contrib.distributions.Gamma.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.Gamma.beta

Inverse scale parameter.

#### tf.contrib.distributions.Gamma.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Gamma.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.Gamma.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.Gamma.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.Gamma.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Gamma.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Gamma.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Gamma.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Gamma.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Gamma.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Gamma.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.Gamma.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.Gamma.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.Gamma.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.Gamma.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.Gamma.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Gamma.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Gamma.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Gamma.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.Gamma.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.Gamma.std(name='std')

Standard deviation.

#### tf.contrib.distributions.Gamma.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.Gamma.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.InverseGamma

The InverseGamma distribution with parameter alpha and beta.

The parameters are the shape and inverse scale parameters alpha, beta.

The PDF of this distribution is:

pdf(x) = (beta^alpha)/Gamma(alpha)(x^(-alpha-1))e^(-beta/x), x > 0

and the CDF of this distribution is:

cdf(x) = GammaInc(alpha, beta / x) / Gamma(alpha), x > 0

where GammaInc is the upper incomplete Gamma function.

Examples:

dist = InverseGamma(alpha=3.0, beta=2.0)
dist2 = InverseGamma(alpha=[3.0, 4.0], beta=[2.0, 3.0])


#### tf.contrib.distributions.InverseGamma.__init__(alpha, beta, validate_args=False, allow_nan_stats=True, name='InverseGamma') {:#InverseGamma.init}

Construct InverseGamma distributions with parameters alpha and beta.

The parameters alpha and beta must be shaped in a way that supports broadcasting (e.g. alpha + beta is a valid operation).

##### Args:
• alpha: Floating point tensor, the shape params of the distribution(s). alpha must contain only positive values.
• beta: Floating point tensor, the scale params of the distribution(s). beta must contain only positive values.
• validate_args: Boolean, default False. Whether to assert that a > 0, b > 0, and that x > 0 in the methods prob(x) and log_prob(x). If validate_args is False and the inputs are invalid, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name to prepend to all ops created by this distribution.
##### Raises:
• TypeError: if alpha and beta are different dtypes.

#### tf.contrib.distributions.InverseGamma.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

Shape parameter.

#### tf.contrib.distributions.InverseGamma.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

Scale parameter.

#### tf.contrib.distributions.InverseGamma.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.InverseGamma.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.InverseGamma.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.InverseGamma.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.InverseGamma.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.InverseGamma.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.InverseGamma.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.InverseGamma.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.InverseGamma.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.InverseGamma.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.InverseGamma.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.InverseGamma.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.InverseGamma.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.InverseGamma.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.InverseGamma.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.InverseGamma.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.InverseGamma.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.InverseGamma.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.InverseGamma.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.InverseGamma.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.InverseGamma.std(name='std')

Standard deviation.

#### tf.contrib.distributions.InverseGamma.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.InverseGamma.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.Laplace

The Laplace distribution with location and scale > 0 parameters.

#### Mathematical details

The PDF of this distribution is:

f(x | mu, b, b > 0) = 0.5 / b exp(-|x - mu| / b)

Note that the Laplace distribution can be thought of two exponential distributions spliced together "back-to-back."

#### tf.contrib.distributions.Laplace.__init__(loc, scale, validate_args=False, allow_nan_stats=True, name='Laplace') {:#Laplace.init}

Construct Laplace distribution with parameters loc and scale.

The parameters loc and scale must be shaped in a way that supports broadcasting (e.g., loc / scale is a valid operation).

##### Args:
• loc: Floating point tensor which characterizes the location (center) of the distribution.
• scale: Positive floating point tensor which characterizes the spread of the distribution.
• validate_args: Boolean, default False. Whether to validate input with asserts. If validate_args is False, and the inputs are invalid, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name to give Ops created by the initializer.
##### Raises:
• TypeError: if loc and scale are of different dtype.

#### tf.contrib.distributions.Laplace.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.Laplace.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.Laplace.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Laplace.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.Laplace.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.Laplace.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.Laplace.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Laplace.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Laplace.loc

Distribution parameter for the location.

#### tf.contrib.distributions.Laplace.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Laplace.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Laplace.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Laplace.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Laplace.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.Laplace.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.Laplace.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.Laplace.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.Laplace.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.Laplace.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Laplace.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Laplace.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Laplace.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.Laplace.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.Laplace.scale

Distribution parameter for scale.

#### tf.contrib.distributions.Laplace.std(name='std')

Standard deviation.

#### tf.contrib.distributions.Laplace.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.Laplace.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.Normal

The scalar Normal distribution with mean and stddev parameters mu, sigma.

#### Mathematical details

The PDF of this distribution is:

f(x) = sqrt(1/(2*pi*sigma^2)) exp(-(x-mu)^2/(2*sigma^2))

#### Examples

Examples of initialization of one or a batch of distributions.

# Define a single scalar Normal distribution.
dist = tf.contrib.distributions.Normal(mu=0., sigma=3.)

# Evaluate the cdf at 1, returning a scalar.
dist.cdf(1.)

# Define a batch of two scalar valued Normals.
# The first has mean 1 and standard deviation 11, the second 2 and 22.
dist = tf.contrib.distributions.Normal(mu=[1, 2.], sigma=[11, 22.])

# Evaluate the pdf of the first distribution on 0, and the second on 1.5,
# returning a length two tensor.
dist.pdf([0, 1.5])

# Get 3 samples, returning a 3 x 2 tensor.
dist.sample([3])


# Define a batch of two scalar valued Normals.
# Both have mean 1, but different standard deviations.
dist = tf.contrib.distributions.Normal(mu=1., sigma=[11, 22.])

# Evaluate the pdf of both distributions on the same point, 3.0,
# returning a length 2 tensor.
dist.pdf(3.0)


#### tf.contrib.distributions.Normal.__init__(mu, sigma, validate_args=False, allow_nan_stats=True, name='Normal') {:#Normal.init}

Construct Normal distributions with mean and stddev mu and sigma.

The parameters mu and sigma must be shaped in a way that supports broadcasting (e.g. mu + sigma is a valid operation).

##### Args:
• mu: Floating point tensor, the means of the distribution(s).
• sigma: Floating point tensor, the stddevs of the distribution(s). sigma must contain only positive values.
• validate_args: Boolean, default False. Whether to assert that sigma > 0. If validate_args is False, correct output is not guaranteed when input is invalid.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name to give Ops created by the initializer.
##### Raises:
• TypeError: if mu and sigma are different dtypes.

#### tf.contrib.distributions.Normal.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.Normal.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.Normal.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Normal.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.Normal.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.Normal.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.Normal.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Normal.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Normal.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Normal.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Normal.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Normal.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Normal.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.Normal.mu

Distribution parameter for the mean.

#### tf.contrib.distributions.Normal.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.Normal.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.Normal.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.Normal.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.Normal.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Normal.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Normal.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Normal.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.Normal.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.Normal.sigma

Distribution parameter for standard deviation.

#### tf.contrib.distributions.Normal.std(name='std')

Standard deviation.

#### tf.contrib.distributions.Normal.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.Normal.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.Poisson

Poisson distribution.

The Poisson distribution is parameterized by lam, the rate parameter.

The pmf of this distribution is:


pmf(k) = e^(-lam) * lam^k / k!,  k >= 0


#### tf.contrib.distributions.Poisson.__init__(lam, validate_args=False, allow_nan_stats=True, name='Poisson') {:#Poisson.init}

Construct Poisson distributions.

##### Args:
• lam: Floating point tensor, the rate parameter of the distribution(s). lam must be positive.
• validate_args: Boolean, default False. Whether to assert that lam > 0 as well as inputs to pmf computations are non-negative integers. If validate_args is False, then pmf computations might return NaN, but can be evaluated at any real value.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: A name for this distribution.

#### tf.contrib.distributions.Poisson.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.Poisson.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.Poisson.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Poisson.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.Poisson.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.Poisson.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.Poisson.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Poisson.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

Rate parameter.

#### tf.contrib.distributions.Poisson.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Poisson.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Poisson.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Poisson.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Poisson.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.Poisson.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.Poisson.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.Poisson.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.Poisson.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.Poisson.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Poisson.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Poisson.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Poisson.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.Poisson.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.Poisson.std(name='std')

Standard deviation.

#### tf.contrib.distributions.Poisson.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.Poisson.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.StudentT

Student's t distribution with degree-of-freedom parameter df.

#### Mathematical details

The PDF of this distribution is:

f(t) = gamma((df+1)/2)/sqrt(df*pi)/gamma(df/2)*(1+t^2/df)^(-(df+1)/2)

#### Examples

Examples of initialization of one or a batch of distributions.

# Define a single scalar Student t distribution.
single_dist = tf.contrib.distributions.StudentT(df=3)

# Evaluate the pdf at 1, returning a scalar Tensor.
single_dist.pdf(1.)

# Define a batch of two scalar valued Student t's.
# The first has degrees of freedom 2, mean 1, and scale 11.
# The second 3, 2 and 22.
multi_dist = tf.contrib.distributions.StudentT(df=[2, 3],
mu=[1, 2.],
sigma=[11, 22.])

# Evaluate the pdf of the first distribution on 0, and the second on 1.5,
# returning a length two tensor.
multi_dist.pdf([0, 1.5])

# Get 3 samples, returning a 3 x 2 tensor.
multi_dist.sample(3)


# Define a batch of two Student's t distributions.
# Both have df 2 and mean 1, but different scales.
dist = tf.contrib.distributions.StudentT(df=2, mu=1, sigma=[11, 22.])

# Evaluate the pdf of both distributions on the same point, 3.0,
# returning a length 2 tensor.
dist.pdf(3.0)


#### tf.contrib.distributions.StudentT.__init__(df, mu, sigma, validate_args=False, allow_nan_stats=True, name='StudentT') {:#StudentT.init}

Construct Student's t distributions.

The distributions have degree of freedom df, mean mu, and scale sigma.

The parameters df, mu, and sigma must be shaped in a way that supports broadcasting (e.g. df + mu + sigma is a valid operation).

##### Args:
• df: Floating point tensor, the degrees of freedom of the distribution(s). df must contain only positive values.
• mu: Floating point tensor, the means of the distribution(s).
• sigma: Floating point tensor, the scaling factor for the distribution(s). sigma must contain only positive values. Note that sigma is not the standard deviation of this distribution.
• validate_args: Boolean, default False. Whether to assert that df > 0 and sigma > 0. If validate_args is False and inputs are invalid, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name to give Ops created by the initializer.
##### Raises:
• TypeError: if mu and sigma are different dtypes.

#### tf.contrib.distributions.StudentT.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.StudentT.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.StudentT.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.StudentT.df

Degrees of freedom in these Student's t distribution(s).

#### tf.contrib.distributions.StudentT.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.StudentT.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.StudentT.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.StudentT.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.StudentT.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.StudentT.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.StudentT.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.StudentT.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.StudentT.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.StudentT.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.StudentT.mu

Locations of these Student's t distribution(s).

#### tf.contrib.distributions.StudentT.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.StudentT.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.StudentT.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.StudentT.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.StudentT.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.StudentT.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.StudentT.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.StudentT.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.StudentT.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.StudentT.sigma

Scaling factors of these Student's t distribution(s).

#### tf.contrib.distributions.StudentT.std(name='std')

Standard deviation.

#### tf.contrib.distributions.StudentT.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.StudentT.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.Uniform

Uniform distribution with a and b parameters.

The PDF of this distribution is constant between [a, b], and 0 elsewhere.

#### tf.contrib.distributions.Uniform.__init__(a=0.0, b=1.0, validate_args=False, allow_nan_stats=True, name='Uniform') {:#Uniform.init}

Construct Uniform distributions with a and b.

The parameters a and b must be shaped in a way that supports broadcasting (e.g. b - a is a valid operation).

# Without broadcasting
u1 = Uniform(3.0, 4.0)  # a single uniform distribution [3, 4]
u2 = Uniform([1.0, 2.0], [3.0, 4.0])  # 2 distributions [1, 3], [2, 4]
u3 = Uniform([[1.0, 2.0],
[3.0, 4.0]],
[[1.5, 2.5],
[3.5, 4.5]])  # 4 distributions


u1 = Uniform(3.0, [5.0, 6.0, 7.0])  # 3 distributions

##### Args:
• a: Floating point tensor, the minimum endpoint.
• b: Floating point tensor, the maximum endpoint. Must be > a.
• validate_args: Boolean, default False. Whether to validate input with asserts. If validate_args is False, and the inputs are invalid, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name to prefix Ops created by this distribution class.
##### Raises:
• InvalidArgumentError: if a >= b and validate_args=False.

#### tf.contrib.distributions.Uniform.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.Uniform.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.Uniform.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Uniform.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.Uniform.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.Uniform.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.Uniform.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Uniform.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Uniform.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Uniform.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Uniform.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Uniform.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Uniform.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.Uniform.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.Uniform.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.Uniform.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.Uniform.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.Uniform.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Uniform.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Uniform.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Uniform.range(name='range')

b - a.

#### tf.contrib.distributions.Uniform.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.Uniform.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.Uniform.std(name='std')

Standard deviation.

#### tf.contrib.distributions.Uniform.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.Uniform.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.MultivariateNormalDiag

The multivariate normal distribution on R^k.

This distribution is defined by a 1-D mean mu and a 1-D diagonal diag_stdev, representing the standard deviations. This distribution assumes the random variables, (X_1,...,X_k) are independent, thus no non-diagonal terms of the covariance matrix are needed.

This allows for O(k) pdf evaluation, sampling, and storage.

#### Mathematical details

The PDF of this distribution is defined in terms of the diagonal covariance determined by diag_stdev: C_{ii} = diag_stdev[i]**2.

f(x) = (2 pi)^(-k/2) |det(C)|^(-1/2) exp(-1/2 (x - mu)^T C^{-1} (x - mu))


#### Examples

A single multi-variate Gaussian distribution is defined by a vector of means of length k, and the square roots of the (independent) random variables.

Extra leading dimensions, if provided, allow for batches.

# Initialize a single 3-variate Gaussian with diagonal standard deviation.
mu = [1, 2, 3.]
diag_stdev = [4, 5, 6.]
dist = tf.contrib.distributions.MultivariateNormalDiag(mu, diag_stdev)

# Evaluate this on an observation in R^3, returning a scalar.
dist.pdf([-1, 0, 1])

# Initialize a batch of two 3-variate Gaussians.
mu = [[1, 2, 3], [11, 22, 33]]  # shape 2 x 3
diag_stdev = ...  # shape 2 x 3, positive.
dist = tf.contrib.distributions.MultivariateNormalDiag(mu, diag_stdev)

# Evaluate this on a two observations, each in R^3, returning a length two
# tensor.
x = [[-1, 0, 1], [-11, 0, 11]]  # Shape 2 x 3.
dist.pdf(x)


#### tf.contrib.distributions.MultivariateNormalDiag.__init__(mu, diag_stdev, validate_args=False, allow_nan_stats=True, name='MultivariateNormalDiag') {:#MultivariateNormalDiag.init}

Multivariate Normal distributions on R^k.

User must provide means mu and standard deviations diag_stdev. Each batch member represents a random vector (X_1,...,X_k) of independent random normals. The mean of X_i is mu[i], and the standard deviation is diag_stdev[i].

##### Args:
• mu: Rank N + 1 floating point tensor with shape [N1,...,Nb, k], b >= 0.
• diag_stdev: Rank N + 1 Tensor with same dtype and shape as mu, representing the standard deviations. Must be positive.
• validate_args: Boolean, default False. Whether to validate input with asserts. If validate_args is False, and the inputs are invalid, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name to give Ops created by the initializer.
##### Raises:
• TypeError: If mu and diag_stdev are different dtypes.

#### tf.contrib.distributions.MultivariateNormalDiag.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.MultivariateNormalDiag.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.MultivariateNormalDiag.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.MultivariateNormalDiag.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.MultivariateNormalDiag.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.MultivariateNormalDiag.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.MultivariateNormalDiag.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.MultivariateNormalDiag.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.MultivariateNormalDiag.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.MultivariateNormalDiag.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.MultivariateNormalDiag.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.MultivariateNormalDiag.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.MultivariateNormalDiag.log_sigma_det(name='log_sigma_det')

Log of determinant of covariance matrix.

#### tf.contrib.distributions.MultivariateNormalDiag.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.MultivariateNormalDiag.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.MultivariateNormalDiag.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.MultivariateNormalDiag.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.MultivariateNormalDiag.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.MultivariateNormalDiag.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.MultivariateNormalDiag.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.MultivariateNormalDiag.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.MultivariateNormalDiag.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.MultivariateNormalDiag.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.MultivariateNormalDiag.sigma

Dense (batch) covariance matrix, if available.

#### tf.contrib.distributions.MultivariateNormalDiag.sigma_det(name='sigma_det')

Determinant of covariance matrix.

#### tf.contrib.distributions.MultivariateNormalDiag.std(name='std')

Standard deviation.

#### tf.contrib.distributions.MultivariateNormalDiag.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.MultivariateNormalDiag.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.MultivariateNormalFull

The multivariate normal distribution on R^k.

This distribution is defined by a 1-D mean mu and covariance matrix sigma. Evaluation of the pdf, determinant, and sampling are all O(k^3) operations.

#### Mathematical details

With C = sigma, the PDF of this distribution is:

f(x) = (2 pi)^(-k/2) |det(C)|^(-1/2) exp(-1/2 (x - mu)^T C^{-1} (x - mu))


#### Examples

A single multi-variate Gaussian distribution is defined by a vector of means of length k, and a covariance matrix of shape k x k.

Extra leading dimensions, if provided, allow for batches.

# Initialize a single 3-variate Gaussian with diagonal covariance.
mu = [1, 2, 3.]
sigma = [[1, 0, 0], [0, 3, 0], [0, 0, 2.]]
dist = tf.contrib.distributions.MultivariateNormalFull(mu, chol)

# Evaluate this on an observation in R^3, returning a scalar.
dist.pdf([-1, 0, 1])

# Initialize a batch of two 3-variate Gaussians.
mu = [[1, 2, 3], [11, 22, 33.]]
sigma = ...  # shape 2 x 3 x 3, positive definite.
dist = tf.contrib.distributions.MultivariateNormalFull(mu, sigma)

# Evaluate this on a two observations, each in R^3, returning a length two
# tensor.
x = [[-1, 0, 1], [-11, 0, 11.]]  # Shape 2 x 3.
dist.pdf(x)


#### tf.contrib.distributions.MultivariateNormalFull.__init__(mu, sigma, validate_args=False, allow_nan_stats=True, name='MultivariateNormalFull') {:#MultivariateNormalFull.init}

Multivariate Normal distributions on R^k.

User must provide means mu and sigma, the mean and covariance.

##### Args:
• mu: (N+1)-D floating point tensor with shape [N1,...,Nb, k], b >= 0.
• sigma: (N+2)-D Tensor with same dtype as mu and shape [N1,...,Nb, k, k]. Each batch member must be positive definite.
• validate_args: Boolean, default False. Whether to validate input with asserts. If validate_args is False, and the inputs are invalid, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name to give Ops created by the initializer.
##### Raises:
• TypeError: If mu and sigma are different dtypes.

#### tf.contrib.distributions.MultivariateNormalFull.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.MultivariateNormalFull.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.MultivariateNormalFull.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.MultivariateNormalFull.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.MultivariateNormalFull.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.MultivariateNormalFull.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.MultivariateNormalFull.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.MultivariateNormalFull.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.MultivariateNormalFull.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.MultivariateNormalFull.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.MultivariateNormalFull.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.MultivariateNormalFull.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.MultivariateNormalFull.log_sigma_det(name='log_sigma_det')

Log of determinant of covariance matrix.

#### tf.contrib.distributions.MultivariateNormalFull.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.MultivariateNormalFull.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.MultivariateNormalFull.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.MultivariateNormalFull.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.MultivariateNormalFull.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.MultivariateNormalFull.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.MultivariateNormalFull.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.MultivariateNormalFull.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.MultivariateNormalFull.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.MultivariateNormalFull.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.MultivariateNormalFull.sigma

Dense (batch) covariance matrix, if available.

#### tf.contrib.distributions.MultivariateNormalFull.sigma_det(name='sigma_det')

Determinant of covariance matrix.

#### tf.contrib.distributions.MultivariateNormalFull.std(name='std')

Standard deviation.

#### tf.contrib.distributions.MultivariateNormalFull.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.MultivariateNormalFull.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.MultivariateNormalCholesky

The multivariate normal distribution on R^k.

This distribution is defined by a 1-D mean mu and a Cholesky factor chol. Providing the Cholesky factor allows for O(k^2) pdf evaluation and sampling, and requires O(k^2) storage.

#### Mathematical details

The Cholesky factor chol defines the covariance matrix: C = chol chol^T.

The PDF of this distribution is then:

f(x) = (2 pi)^(-k/2) |det(C)|^(-1/2) exp(-1/2 (x - mu)^T C^{-1} (x - mu))


#### Examples

A single multi-variate Gaussian distribution is defined by a vector of means of length k, and a covariance matrix of shape k x k.

Extra leading dimensions, if provided, allow for batches.

# Initialize a single 3-variate Gaussian with diagonal covariance.
# Note, this would be more efficient with MultivariateNormalDiag.
mu = [1, 2, 3.]
chol = [[1, 0, 0], [0, 3, 0], [0, 0, 2]]
dist = tf.contrib.distributions.MultivariateNormalCholesky(mu, chol)

# Evaluate this on an observation in R^3, returning a scalar.
dist.pdf([-1, 0, 1])

# Initialize a batch of two 3-variate Gaussians.
mu = [[1, 2, 3], [11, 22, 33]]
chol = ...  # shape 2 x 3 x 3, lower triangular, positive diagonal.
dist = tf.contrib.distributions.MultivariateNormalCholesky(mu, chol)

# Evaluate this on a two observations, each in R^3, returning a length two
# tensor.
x = [[-1, 0, 1], [-11, 0, 11]]  # Shape 2 x 3.
dist.pdf(x)


Trainable (batch) Choesky matrices can be created with tf.contrib.distributions.matrix_diag_transform()

#### tf.contrib.distributions.MultivariateNormalCholesky.__init__(mu, chol, validate_args=False, allow_nan_stats=True, name='MultivariateNormalCholesky') {:#MultivariateNormalCholesky.init}

Multivariate Normal distributions on R^k.

User must provide means mu and chol which holds the (batch) Cholesky factors, such that the covariance of each batch member is chol chol^T.

##### Args:
• mu: (N+1)-D floating point tensor with shape [N1,...,Nb, k], b >= 0.
• chol: (N+2)-D Tensor with same dtype as mu and shape [N1,...,Nb, k, k]. The upper triangular part is ignored (treated as though it is zero), and the diagonal must be positive.
• validate_args: Boolean, default False. Whether to validate input with asserts. If validate_args is False, and the inputs are invalid, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name to give Ops created by the initializer.
##### Raises:
• TypeError: If mu and chol are different dtypes.

#### tf.contrib.distributions.MultivariateNormalCholesky.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.MultivariateNormalCholesky.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.MultivariateNormalCholesky.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.MultivariateNormalCholesky.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.MultivariateNormalCholesky.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.MultivariateNormalCholesky.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.MultivariateNormalCholesky.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.MultivariateNormalCholesky.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.MultivariateNormalCholesky.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.MultivariateNormalCholesky.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.MultivariateNormalCholesky.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.MultivariateNormalCholesky.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.MultivariateNormalCholesky.log_sigma_det(name='log_sigma_det')

Log of determinant of covariance matrix.

#### tf.contrib.distributions.MultivariateNormalCholesky.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.MultivariateNormalCholesky.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.MultivariateNormalCholesky.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.MultivariateNormalCholesky.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.MultivariateNormalCholesky.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.MultivariateNormalCholesky.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.MultivariateNormalCholesky.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.MultivariateNormalCholesky.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.MultivariateNormalCholesky.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.MultivariateNormalCholesky.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.MultivariateNormalCholesky.sigma

Dense (batch) covariance matrix, if available.

#### tf.contrib.distributions.MultivariateNormalCholesky.sigma_det(name='sigma_det')

Determinant of covariance matrix.

#### tf.contrib.distributions.MultivariateNormalCholesky.std(name='std')

Standard deviation.

#### tf.contrib.distributions.MultivariateNormalCholesky.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.MultivariateNormalCholesky.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### tf.contrib.distributions.matrix_diag_transform(matrix, transform=None, name=None)

Transform diagonal of [batch-]matrix, leave rest of matrix unchanged.

Create a trainable covariance defined by a Cholesky factor:

# Transform network layer into 2 x 2 array.
matrix_values = tf.contrib.layers.fully_connected(activations, 4)
matrix = tf.reshape(matrix_values, (batch_size, 2, 2))

# Make the diagonal positive.  If the upper triangle was zero, this would be a
# valid Cholesky factor.
chol = matrix_diag_transform(matrix, transform=tf.nn.softplus)

# OperatorPDCholesky ignores the upper triangle.
operator = OperatorPDCholesky(chol)


Example of heteroskedastic 2-D linear regression.

# Get a trainable Cholesky factor.
matrix_values = tf.contrib.layers.fully_connected(activations, 4)
matrix = tf.reshape(matrix_values, (batch_size, 2, 2))
chol = matrix_diag_transform(matrix, transform=tf.nn.softplus)

# Get a trainable mean.
mu = tf.contrib.layers.fully_connected(activations, 2)

# This is a fully trainable multivariate normal!
dist = tf.contrib.distributions.MVNCholesky(mu, chol)

# Standard log loss.  Minimizing this will "train" mu and chol, and then dist
# will be a distribution predicting labels as multivariate Gaussians.
loss = -1 * tf.reduce_mean(dist.log_pdf(labels))

##### Args:
• matrix: Rank R Tensor, R >= 2, where the last two dimensions are equal.
• transform: Element-wise function mapping Tensors to Tensors. To be applied to the diagonal of matrix. If None, matrix is returned unchanged. Defaults to None.
• name: A name to give created ops. Defaults to "matrix_diag_transform".
##### Returns:

A Tensor with same shape and dtype as matrix.

### class tf.contrib.distributions.Dirichlet

Dirichlet distribution.

This distribution is parameterized by a vector alpha of concentration parameters for k classes.

#### Mathematical details

The Dirichlet is a distribution over the standard n-simplex, where the standard n-simplex is defined by: { (x_1, ..., x_n) in R^(n+1) | sum_j x_j = 1 and x_j >= 0 for all j }. The distribution has hyperparameters alpha = (alpha_1,...,alpha_k), and probability mass function (prob):

prob(x) = 1 / Beta(alpha) * prod_j x_j^(alpha_j - 1)

where Beta(x) = prod_j Gamma(x_j) / Gamma(sum_j x_j) is the multivariate beta function.

This class provides methods to create indexed batches of Dirichlet distributions. If the provided alpha is rank 2 or higher, for every fixed set of leading dimensions, the last dimension represents one single Dirichlet distribution. When calling distribution functions (e.g. dist.prob(x)), alpha and x are broadcast to the same shape (if possible). In all cases, the last dimension of alpha/x represents single Dirichlet distributions.

#### Examples

alpha = [1, 2, 3]
dist = Dirichlet(alpha)


Creates a 3-class distribution, with the 3rd class is most likely to be drawn. The distribution functions can be evaluated on x.

# x same shape as alpha.
x = [.2, .3, .5]
dist.prob(x)  # Shape []

# alpha will be broadcast to [[1, 2, 3], [1, 2, 3]] to match x.
x = [[.1, .4, .5], [.2, .3, .5]]
dist.prob(x)  # Shape [2]

# alpha will be broadcast to shape [5, 7, 3] to match x.
x = [[...]]  # Shape [5, 7, 3]
dist.prob(x)  # Shape [5, 7]


Creates a 2-batch of 3-class distributions.

alpha = [[1, 2, 3], [4, 5, 6]]  # Shape [2, 3]
dist = Dirichlet(alpha)

# x will be broadcast to [[2, 1, 0], [2, 1, 0]] to match alpha.
x = [.2, .3, .5]
dist.prob(x)  # Shape [2]


#### tf.contrib.distributions.Dirichlet.__init__(alpha, validate_args=False, allow_nan_stats=True, name='Dirichlet') {:#Dirichlet.init}

Initialize a batch of Dirichlet distributions.

##### Args:
• alpha: Positive floating point tensor with shape broadcastable to [N1,..., Nm, k] m >= 0. Defines this as a batch of N1 x ... x Nm different k class Dirichlet distributions.
• validate_args: Boolean, default False. Whether to assert valid values for parameters alpha and x in prob and log_prob. If False, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name to prefix Ops created by this distribution class.

• Examples:

# Define 1-batch of 2-class Dirichlet distributions,
# also known as a Beta distribution.
dist = Dirichlet([1.1, 2.0])

# Define a 2-batch of 3-class distributions.
dist = Dirichlet([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])


#### tf.contrib.distributions.Dirichlet.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

Shape parameter.

#### tf.contrib.distributions.Dirichlet.alpha_sum

Sum of shape parameter.

#### tf.contrib.distributions.Dirichlet.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.Dirichlet.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Dirichlet.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.Dirichlet.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.Dirichlet.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.Dirichlet.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Dirichlet.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Dirichlet.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Dirichlet.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Dirichlet.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Dirichlet.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Dirichlet.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.Dirichlet.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.Dirichlet.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.Dirichlet.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.Dirichlet.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.Dirichlet.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Dirichlet.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Dirichlet.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Dirichlet.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.Dirichlet.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.Dirichlet.std(name='std')

Standard deviation.

#### tf.contrib.distributions.Dirichlet.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.Dirichlet.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.DirichletMultinomial

DirichletMultinomial mixture distribution.

This distribution is parameterized by a vector alpha of concentration parameters for k classes and n, the counts per each class..

#### Mathematical details

The Dirichlet Multinomial is a distribution over k-class count data, meaning for each k-tuple of non-negative integer counts = [c_1,...,c_k], we have a probability of these draws being made from the distribution. The distribution has hyperparameters alpha = (alpha_1,...,alpha_k), and probability mass function (pmf):

pmf(counts) = N! / (n_1!...n_k!) * Beta(alpha + c) / Beta(alpha)

where above N = sum_j n_j, N! is N factorial, and Beta(x) = prod_j Gamma(x_j) / Gamma(sum_j x_j) is the multivariate beta function.

This is a mixture distribution in that M samples can be produced by: 1. Choose class probabilities p = (p_1,...,p_k) ~ Dir(alpha) 2. Draw integers m = (n_1,...,n_k) ~ Multinomial(N, p)

This class provides methods to create indexed batches of Dirichlet Multinomial distributions. If the provided alpha is rank 2 or higher, for every fixed set of leading dimensions, the last dimension represents one single Dirichlet Multinomial distribution. When calling distribution functions (e.g. dist.pmf(counts)), alpha and counts are broadcast to the same shape (if possible). In all cases, the last dimension of alpha/counts represents single Dirichlet Multinomial distributions.

#### Examples

alpha = [1, 2, 3]
n = 2
dist = DirichletMultinomial(n, alpha)


Creates a 3-class distribution, with the 3rd class is most likely to be drawn. The distribution functions can be evaluated on counts.

# counts same shape as alpha.
counts = [0, 0, 2]
dist.pmf(counts)  # Shape []

# alpha will be broadcast to [[1, 2, 3], [1, 2, 3]] to match counts.
counts = [[1, 1, 0], [1, 0, 1]]
dist.pmf(counts)  # Shape [2]

# alpha will be broadcast to shape [5, 7, 3] to match counts.
counts = [[...]]  # Shape [5, 7, 3]
dist.pmf(counts)  # Shape [5, 7]


Creates a 2-batch of 3-class distributions.

alpha = [[1, 2, 3], [4, 5, 6]]  # Shape [2, 3]
n = [3, 3]
dist = DirichletMultinomial(n, alpha)

# counts will be broadcast to [[2, 1, 0], [2, 1, 0]] to match alpha.
counts = [2, 1, 0]
dist.pmf(counts)  # Shape [2]


#### tf.contrib.distributions.DirichletMultinomial.__init__(n, alpha, validate_args=False, allow_nan_stats=True, name='DirichletMultinomial') {:#DirichletMultinomial.init}

Initialize a batch of DirichletMultinomial distributions.

##### Args:
• n: Non-negative floating point tensor, whose dtype is the same as alpha. The shape is broadcastable to [N1,..., Nm] with m >= 0. Defines this as a batch of N1 x ... x Nm different Dirichlet multinomial distributions. Its components should be equal to integer values.
• alpha: Positive floating point tensor, whose dtype is the same as n with shape broadcastable to [N1,..., Nm, k] m >= 0. Defines this as a batch of N1 x ... x Nm different k class Dirichlet multinomial distributions.
• validate_args: Boolean, default False. Whether to assert valid values for parameters alpha and n, and x in prob and log_prob. If False, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name to prefix Ops created by this distribution class.

• Examples:

# Define 1-batch of 2-class Dirichlet multinomial distribution,
# also known as a beta-binomial.
dist = DirichletMultinomial(2.0, [1.1, 2.0])

# Define a 2-batch of 3-class distributions.
dist = DirichletMultinomial([3., 4], [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])


#### tf.contrib.distributions.DirichletMultinomial.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.DirichletMultinomial.alpha

Parameter defining this distribution.

#### tf.contrib.distributions.DirichletMultinomial.alpha_sum

Summation of alpha parameter.

#### tf.contrib.distributions.DirichletMultinomial.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.DirichletMultinomial.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.DirichletMultinomial.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.DirichletMultinomial.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.DirichletMultinomial.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.DirichletMultinomial.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.DirichletMultinomial.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.DirichletMultinomial.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.DirichletMultinomial.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.DirichletMultinomial.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.DirichletMultinomial.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.DirichletMultinomial.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.DirichletMultinomial.n

Parameter defining this distribution.

#### tf.contrib.distributions.DirichletMultinomial.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.DirichletMultinomial.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.DirichletMultinomial.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.DirichletMultinomial.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.DirichletMultinomial.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.DirichletMultinomial.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.DirichletMultinomial.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.DirichletMultinomial.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.DirichletMultinomial.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.DirichletMultinomial.std(name='std')

Standard deviation.

#### tf.contrib.distributions.DirichletMultinomial.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.DirichletMultinomial.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.Multinomial

Multinomial distribution.

This distribution is parameterized by a vector p of probability parameters for k classes and n, the counts per each class..

#### Mathematical details

The Multinomial is a distribution over k-class count data, meaning for each k-tuple of non-negative integer counts = [n_1,...,n_k], we have a probability of these draws being made from the distribution. The distribution has hyperparameters p = (p_1,...,p_k), and probability mass function (pmf):

pmf(counts) = n! / (n_1!...n_k!) * (p_1)^n_1*(p_2)^n_2*...(p_k)^n_k

where above n = sum_j n_j, n! is n factorial.

#### Examples

Create a 3-class distribution, with the 3rd class is most likely to be drawn, using logits..

logits = [-50., -43, 0]
dist = Multinomial(n=4., logits=logits)


Create a 3-class distribution, with the 3rd class is most likely to be drawn.

p = [.2, .3, .5]
dist = Multinomial(n=4., p=p)


The distribution functions can be evaluated on counts.

# counts same shape as p.
counts = [1., 0, 3]
dist.prob(counts)  # Shape []

# p will be broadcast to [[.2, .3, .5], [.2, .3, .5]] to match counts.
counts = [[1., 2, 1], [2, 2, 0]]
dist.prob(counts)  # Shape [2]

# p will be broadcast to shape [5, 7, 3] to match counts.
counts = [[...]]  # Shape [5, 7, 3]
dist.prob(counts)  # Shape [5, 7]


Create a 2-batch of 3-class distributions.

p = [[.1, .2, .7], [.3, .3, .4]]  # Shape [2, 3]
dist = Multinomial(n=[4., 5], p=p)

counts = [[2., 1, 1], [3, 1, 1]]
dist.prob(counts)  # Shape [2]


#### tf.contrib.distributions.Multinomial.__init__(n, logits=None, p=None, validate_args=False, allow_nan_stats=True, name='Multinomial') {:#Multinomial.init}

Initialize a batch of Multinomial distributions.

##### Args:
• n: Non-negative floating point tensor with shape broadcastable to [N1,..., Nm] with m >= 0. Defines this as a batch of N1 x ... x Nm different Multinomial distributions. Its components should be equal to integer values.
• logits: Floating point tensor representing the log-odds of a positive event with shape broadcastable to [N1,..., Nm, k], m >= 0, and the same dtype as n. Defines this as a batch of N1 x ... x Nm different k class Multinomial distributions.
• p: Positive floating point tensor with shape broadcastable to [N1,..., Nm, k] m >= 0 and same dtype as n. Defines this as a batch of N1 x ... x Nm different k class Multinomial distributions. p's components in the last portion of its shape should sum up to 1.
• validate_args: Boolean, default False. Whether to assert valid values for parameters n and p, and x in prob and log_prob. If False, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name to prefix Ops created by this distribution class.

• Examples:

# Define 1-batch of 2-class multinomial distribution,
# also known as a Binomial distribution.
dist = Multinomial(n=2., p=[.1, .9])

# Define a 2-batch of 3-class distributions.
dist = Multinomial(n=[4., 5], p=[[.1, .3, .6], [.4, .05, .55]])


#### tf.contrib.distributions.Multinomial.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.Multinomial.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.Multinomial.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Multinomial.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.Multinomial.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.Multinomial.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.Multinomial.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Multinomial.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Multinomial.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Multinomial.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Multinomial.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Multinomial.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Multinomial.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Log-odds.

Mean.

Mode.

#### tf.contrib.distributions.Multinomial.n

Number of trials.

#### tf.contrib.distributions.Multinomial.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.Multinomial.p

Event probabilities.

#### tf.contrib.distributions.Multinomial.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.Multinomial.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.Multinomial.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.Multinomial.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Multinomial.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Multinomial.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Multinomial.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.Multinomial.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.Multinomial.std(name='std')

Standard deviation.

#### tf.contrib.distributions.Multinomial.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.Multinomial.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.WishartCholesky

The matrix Wishart distribution on positive definite matrices.

This distribution is defined by a scalar degrees of freedom df and a lower, triangular Cholesky factor which characterizes the scale matrix.

Using WishartCholesky is a constant-time improvement over WishartFull. It saves an O(nbk^3) operation, i.e., a matrix-product operation for sampling and a Cholesky factorization in log_prob. For most use-cases it often saves another O(nbk^3) operation since most uses of Wishart will also use the Cholesky factorization.

#### Mathematical details.

The PDF of this distribution is,

f(X) = det(X)^(0.5 (df-k-1)) exp(-0.5 tr[inv(scale) X]) / B(scale, df)


where df >= k denotes the degrees of freedom, scale is a symmetric, pd, k x k matrix, and the normalizing constant B(scale, df) is given by:

B(scale, df) = 2^(0.5 df k) |det(scale)|^(0.5 df) Gamma_k(0.5 df)


where Gamma_k is the multivariate Gamma function.

#### Examples

# Initialize a single 3x3 Wishart with Cholesky factored scale matrix and 5
# degrees-of-freedom.(*)
df = 5
chol_scale = tf.cholesky(...)  # Shape is [3, 3].
dist = tf.contrib.distributions.WishartCholesky(df=df, scale=chol_scale)

# Evaluate this on an observation in R^3, returning a scalar.
x = ... # A 3x3 positive definite matrix.
dist.pdf(x)  # Shape is [], a scalar.

# Evaluate this on a two observations, each in R^{3x3}, returning a length two
# Tensor.
x = [x0, x1]  # Shape is [2, 3, 3].
dist.pdf(x)  # Shape is [2].

# Initialize two 3x3 Wisharts with Cholesky factored scale matrices.
df = [5, 4]
chol_scale = tf.cholesky(...)  # Shape is [2, 3, 3].
dist = tf.contrib.distributions.WishartCholesky(df=df, scale=chol_scale)

# Evaluate this on four observations.
x = [[x0, x1], [x2, x3]]  # Shape is [2, 2, 3, 3].
dist.pdf(x)  # Shape is [2, 2].

# (*) - To efficiently create a trainable covariance matrix, see the example
#   in tf.contrib.distributions.matrix_diag_transform.


#### tf.contrib.distributions.WishartCholesky.__init__(df, scale, cholesky_input_output_matrices=False, validate_args=False, allow_nan_stats=True, name='WishartCholesky') {:#WishartCholesky.init}

Construct Wishart distributions.

##### Args:
• df: float or double Tensor. Degrees of freedom, must be greater than or equal to dimension of the scale matrix.
• scale: float or double Tensor. The Cholesky factorization of the symmetric positive definite scale matrix of the distribution.
• cholesky_input_output_matrices: Boolean. Any function which whose input or output is a matrix assumes the input is Cholesky and returns a Cholesky factored matrix. Examplelog_pdf input takes a Cholesky and sample_n returns a Cholesky when cholesky_input_output_matrices=True.
• validate_args: Boolean, default False. Whether to validate input with asserts. If validate_args is False, and the inputs are invalid, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g., mean, mode) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name scope to give class member ops.

#### tf.contrib.distributions.WishartCholesky.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.WishartCholesky.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.WishartCholesky.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.WishartCholesky.cholesky_input_output_matrices

Boolean indicating if Tensor input/outputs are Cholesky factorized.

#### tf.contrib.distributions.WishartCholesky.df

Wishart distribution degree(s) of freedom.

#### tf.contrib.distributions.WishartCholesky.dimension

Dimension of underlying vector space. The p in R^(p*p).

#### tf.contrib.distributions.WishartCholesky.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.WishartCholesky.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.WishartCholesky.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.WishartCholesky.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.WishartCholesky.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.WishartCholesky.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.WishartCholesky.log_normalizing_constant(name='log_normalizing_constant')

Computes the log normalizing constant, log(Z).

#### tf.contrib.distributions.WishartCholesky.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.WishartCholesky.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.WishartCholesky.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.WishartCholesky.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

#### tf.contrib.distributions.WishartCholesky.mean_log_det(name='mean_log_det')

Computes E[log(det(X))] under this Wishart distribution.

Mode.

#### tf.contrib.distributions.WishartCholesky.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.WishartCholesky.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.WishartCholesky.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.WishartCholesky.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.WishartCholesky.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.WishartCholesky.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.WishartCholesky.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.WishartCholesky.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.WishartCholesky.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.WishartCholesky.scale()

Wishart distribution scale matrix.

#### tf.contrib.distributions.WishartCholesky.scale_operator_pd

Wishart distribution scale matrix as an OperatorPD.

#### tf.contrib.distributions.WishartCholesky.std(name='std')

Standard deviation.

#### tf.contrib.distributions.WishartCholesky.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.WishartCholesky.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.WishartFull

The matrix Wishart distribution on positive definite matrices.

This distribution is defined by a scalar degrees of freedom df and a symmetric, positive definite scale matrix.

Evaluation of the pdf, determinant, and sampling are all O(k^3) operations where (k, k) is the event space shape.

#### Mathematical details.

The PDF of this distribution is,

f(X) = det(X)^(0.5 (df-k-1)) exp(-0.5 tr[inv(scale) X]) / B(scale, df)


where df >= k denotes the degrees of freedom, scale is a symmetric, pd, k x k matrix, and the normalizing constant B(scale, df) is given by:

B(scale, df) = 2^(0.5 df k) |det(scale)|^(0.5 df) Gamma_k(0.5 df)


where Gamma_k is the multivariate Gamma function.

#### Examples

# Initialize a single 3x3 Wishart with Full factored scale matrix and 5
# degrees-of-freedom.(*)
df = 5
scale = ...  # Shape is [3, 3]; positive definite.
dist = tf.contrib.distributions.WishartFull(df=df, scale=scale)

# Evaluate this on an observation in R^3, returning a scalar.
x = ... # A 3x3 positive definite matrix.
dist.pdf(x)  # Shape is [], a scalar.

# Evaluate this on a two observations, each in R^{3x3}, returning a length two
# Tensor.
x = [x0, x1]  # Shape is [2, 3, 3].
dist.pdf(x)  # Shape is [2].

# Initialize two 3x3 Wisharts with Full factored scale matrices.
df = [5, 4]
scale = ...  # Shape is [2, 3, 3].
dist = tf.contrib.distributions.WishartFull(df=df, scale=scale)

# Evaluate this on four observations.
x = [[x0, x1], [x2, x3]]  # Shape is [2, 2, 3, 3]; xi is positive definite.
dist.pdf(x)  # Shape is [2, 2].

# (*) - To efficiently create a trainable covariance matrix, see the example
#   in tf.contrib.distributions.matrix_diag_transform.


#### tf.contrib.distributions.WishartFull.__init__(df, scale, cholesky_input_output_matrices=False, validate_args=False, allow_nan_stats=True, name='WishartFull') {:#WishartFull.init}

Construct Wishart distributions.

##### Args:
• df: float or double Tensor. Degrees of freedom, must be greater than or equal to dimension of the scale matrix.
• scale: float or double Tensor. The symmetric positive definite scale matrix of the distribution.
• cholesky_input_output_matrices: Boolean. Any function which whose input or output is a matrix assumes the input is Cholesky and returns a Cholesky factored matrix. Examplelog_pdf input takes a Cholesky and sample_n returns a Cholesky when cholesky_input_output_matrices=True.
• validate_args: Boolean, default False. Whether to validate input with asserts. If validate_args is False, and the inputs are invalid, correct behavior is not guaranteed.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g., mean, mode) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: The name scope to give class member ops.

#### tf.contrib.distributions.WishartFull.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.WishartFull.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.WishartFull.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.WishartFull.cholesky_input_output_matrices

Boolean indicating if Tensor input/outputs are Cholesky factorized.

#### tf.contrib.distributions.WishartFull.df

Wishart distribution degree(s) of freedom.

#### tf.contrib.distributions.WishartFull.dimension

Dimension of underlying vector space. The p in R^(p*p).

#### tf.contrib.distributions.WishartFull.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.WishartFull.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.WishartFull.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.WishartFull.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.WishartFull.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.WishartFull.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.WishartFull.log_normalizing_constant(name='log_normalizing_constant')

Computes the log normalizing constant, log(Z).

#### tf.contrib.distributions.WishartFull.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.WishartFull.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.WishartFull.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.WishartFull.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

#### tf.contrib.distributions.WishartFull.mean_log_det(name='mean_log_det')

Computes E[log(det(X))] under this Wishart distribution.

Mode.

#### tf.contrib.distributions.WishartFull.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.WishartFull.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.WishartFull.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.WishartFull.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.WishartFull.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.WishartFull.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.WishartFull.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.WishartFull.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.WishartFull.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.WishartFull.scale()

Wishart distribution scale matrix.

#### tf.contrib.distributions.WishartFull.scale_operator_pd

Wishart distribution scale matrix as an OperatorPD.

#### tf.contrib.distributions.WishartFull.std(name='std')

Standard deviation.

#### tf.contrib.distributions.WishartFull.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.WishartFull.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.TransformedDistribution

A Transformed Distribution.

A Transformed Distribution models p(y) given a base distribution p(x), an invertible transform, y = f(x), and the determinant of the Jacobian of f(x).

Shapes, type, and reparameterization are taken from the base distribution.

#### Mathematical details

• p(x) - probability distribution for random variable X
• p(y) - probability distribution for random variable Y
• f - transform
• g - inverse transform, g(f(x)) = x
• J(x) - Jacobian of f(x)

A Transformed Distribution exposes sample and pdf:

• sample: y = f(x), after drawing a sample of X.
• pdf: p(y) = p(x) / det|J(x)| = p(g(y)) / det|J(g(y))|

A simple example constructing a Log-Normal distribution from a Normal distribution:

logit_normal = TransformedDistribution(
base_dist_cls=tf.contrib.distributions.Normal,
mu=mu,
sigma=sigma,
transform=lambda x: tf.sigmoid(x),
inverse=lambda y: tf.log(y) - tf.log(1. - y),
log_det_jacobian=(lambda x:
tf.reduce_sum(tf.log(tf.sigmoid(x)) + tf.log(1. - tf.sigmoid(x)),
reduction_indices=[-1])))
name="LogitNormalTransformedDistribution"
)


#### tf.contrib.distributions.TransformedDistribution.__init__(base_dist_cls, transform, inverse, log_det_jacobian, name='TransformedDistribution', **base_dist_args) {:#TransformedDistribution.init}

Construct a Transformed Distribution.

##### Args:
• base_dist_cls: the base distribution class to transform. Must be a subclass of Distribution.
• transform: a callable that takes a Tensor sample from base_dist and returns a Tensor of the same shape and type. x => y.
• inverse: a callable that computes the inverse of transform. y => x. If None, users can only call log_pdf on values returned by sample.
• log_det_jacobian: a callable that takes a Tensor sample from base_dist and returns the log of the determinant of the Jacobian of transform.
• name: The name for the distribution.
• **base_dist_args: kwargs to pass on to dist_cls on construction.
##### Raises:
• TypeError: if base_dist_cls is not a subclass of Distribution.

#### tf.contrib.distributions.TransformedDistribution.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.TransformedDistribution.base_distribution

Base distribution, p(x).

#### tf.contrib.distributions.TransformedDistribution.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.TransformedDistribution.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.TransformedDistribution.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.TransformedDistribution.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.TransformedDistribution.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.TransformedDistribution.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.TransformedDistribution.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.TransformedDistribution.inverse

Inverse function of transform, y => x.

#### tf.contrib.distributions.TransformedDistribution.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.TransformedDistribution.log_det_jacobian

Function computing the log determinant of the Jacobian of transform.

#### tf.contrib.distributions.TransformedDistribution.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.TransformedDistribution.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.TransformedDistribution.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.TransformedDistribution.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.TransformedDistribution.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.TransformedDistribution.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.TransformedDistribution.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.TransformedDistribution.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.TransformedDistribution.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.TransformedDistribution.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.TransformedDistribution.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.TransformedDistribution.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.TransformedDistribution.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.TransformedDistribution.std(name='std')

Standard deviation.

#### tf.contrib.distributions.TransformedDistribution.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.TransformedDistribution.transform

Function transforming x => y.

#### tf.contrib.distributions.TransformedDistribution.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.QuantizedDistribution

Distribution representing the quantization Y = ceiling(X).

#### Definition in terms of sampling.

1. Draw X
2. Set Y <-- ceiling(X)
3. If Y < lower_cutoff, reset Y <-- lower_cutoff
4. If Y > upper_cutoff, reset Y <-- upper_cutoff
5. Return Y


#### Definition in terms of the probability mass function.

Given scalar random variable X, we define a discrete random variable Y supported on the integers as follows:

P[Y = j] := P[X <= lower_cutoff],  if j == lower_cutoff,
:= P[X > upper_cutoff - 1],  j == upper_cutoff,
:= 0, if j < lower_cutoff or j > upper_cutoff,
:= P[j - 1 < X <= j],  all other j.


Conceptually, without cutoffs, the quantization process partitions the real line R into half open intervals, and identifies an integer j with the right endpoints:

R = ... (-2, -1](-1, 0](0, 1](1, 2](2, 3](3, 4] ...
j = ...      -1      0     1     2     3     4  ...


P[Y = j] is the mass of X within the jth interval. If lower_cutoff = 0, and upper_cutoff = 2, then the intervals are redrawn and j is re-assigned:

R = (-infty, 0](0, 1](1, infty)
j =          0     1     2


P[Y = j] is still the mass of X within the jth interval.

#### Caveats

Since evaluation of each P[Y = j] involves a cdf evaluation (rather than a closed form function such as for a Poisson), computations such as mean and entropy are better done with samples or approximations, and are not implemented by this class.

#### tf.contrib.distributions.QuantizedDistribution.__init__(base_dist_cls, lower_cutoff=None, upper_cutoff=None, name='QuantizedDistribution', **base_dist_args) {:#QuantizedDistribution.init}

Construct a Quantized Distribution.

Some properties are inherited from the distribution defining X. In particular, validate_args and allow_nan_stats are determined for this QuantizedDistribution by reading the additional kwargs passed as base_dist_args.

##### Args:
• base_dist_cls: the base distribution class to transform. Must be a subclass of Distribution implementing cdf.
• lower_cutoff: Tensor with same dtype as this distribution and shape able to be added to samples. Should be a whole number. Default None. If provided, base distribution's pdf/pmf should be defined at lower_cutoff.
• upper_cutoff: Tensor with same dtype as this distribution and shape able to be added to samples. Should be a whole number. Default None. If provided, base distribution's pdf/pmf should be defined at upper_cutoff - 1. upper_cutoff must be strictly greater than lower_cutoff.
• name: The name for the distribution.
• **base_dist_args: kwargs to pass on to dist_cls on construction. These determine the shape and dtype of this distribution.
##### Raises:
• TypeError: If base_dist_cls is not a subclass of Distribution or continuous.
• AttributeError: If the base distribution does not implement cdf.

#### tf.contrib.distributions.QuantizedDistribution.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.QuantizedDistribution.base_distribution

Base distribution, p(x).

#### tf.contrib.distributions.QuantizedDistribution.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.QuantizedDistribution.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.QuantizedDistribution.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.QuantizedDistribution.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.QuantizedDistribution.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.QuantizedDistribution.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.QuantizedDistribution.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.QuantizedDistribution.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.QuantizedDistribution.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.QuantizedDistribution.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.QuantizedDistribution.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.QuantizedDistribution.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.QuantizedDistribution.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.QuantizedDistribution.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.QuantizedDistribution.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.QuantizedDistribution.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.QuantizedDistribution.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.QuantizedDistribution.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.QuantizedDistribution.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.QuantizedDistribution.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.QuantizedDistribution.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.QuantizedDistribution.std(name='std')

Standard deviation.

#### tf.contrib.distributions.QuantizedDistribution.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.QuantizedDistribution.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.

### class tf.contrib.distributions.Mixture

Mixture distribution.

The Mixture object implements batched mixture distributions. The mixture model is defined by a Categorical distribution (the mixture) and a python list of Distribution objects.

Methods supported include log_prob, prob, mean, sample, and entropy_lower_bound.

#### tf.contrib.distributions.Mixture.__init__(cat, components, validate_args=False, allow_nan_stats=True, name='Mixture') {:#Mixture.init}

Initialize a Mixture distribution.

A Mixture is defined by a Categorical (cat, representing the mixture probabilities) and a list of Distribution objects all having matching dtype, batch shape, event shape, and continuity properties (the components).

The num_classes of cat must be possible to infer at graph construction time and match len(components).

##### Args:
• cat: A Categorical distribution instance, representing the probabilities of distributions.
• components: A list or tuple of Distribution instances. Each instance must have the same type, be defined on the same domain, and have matching event_shape and batch_shape.
• validate_args: Boolean, default False. If True, raise a runtime error if batch or event ranks are inconsistent between cat and any of the distributions. This is only checked if the ranks cannot be determined statically at graph construction time.
• allow_nan_stats: Boolean, default True. If False, raise an exception if a statistic (e.g. mean/mode/etc...) is undefined for any batch member. If True, batch members with valid parameters leading to undefined statistics will return NaN for this statistic.
• name: A name for this distribution (optional).
##### Raises:
• TypeError: If cat is not a Categorical, or components is not a list or tuple, or the elements of components are not instances of Distribution, or do not have matching dtype.
• ValueError: If components is an empty list or tuple, or its elements do not have a statically known event rank. If cat.num_classes cannot be inferred at graph creation time, or the constant value of cat.num_classes is not equal to len(components), or all components and cat do not have matching static batch shapes, or all components do not have matching static event shapes.

#### tf.contrib.distributions.Mixture.allow_nan_stats

Python boolean describing behavior when a stat is undefined.

Stats return +/- infinity when it makes sense. E.g., the variance of a Cauchy distribution is infinity. However, sometimes the statistic is undefined, e.g., if a distribution's pdf does not achieve a maximum within the support of the distribution, the mode is undefined. If the mean is undefined, then by definition the variance is undefined. E.g. the mean for Student's T for df = 1 is undefined (no clear way to say it is either + or - infinity), so the variance = E[(X - mean)^2] is also undefined.

##### Returns:
• allow_nan_stats: Python boolean.

#### tf.contrib.distributions.Mixture.batch_shape(name='batch_shape')

Shape of a single sample from a single event index as a 1-D Tensor.

The product of the dimensions of the batch_shape is the number of independent distributions of this kind the instance represents.

##### Args:
• name: name to give to the op
##### Returns:
• batch_shape: Tensor.

#### tf.contrib.distributions.Mixture.cdf(value, name='cdf')

Cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

cdf(x) := P[X <= x]

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• cdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Mixture.dtype

The DType of Tensors handled by this Distribution.

#### tf.contrib.distributions.Mixture.entropy(name='entropy')

Shanon entropy in nats.

#### tf.contrib.distributions.Mixture.entropy_lower_bound(name='entropy_lower_bound')

A lower bound on the entropy of this mixture model.

The bound below is not always very tight, and its usefulness depends on the mixture probabilities and the components in use.

A lower bound is useful for ELBO when the Mixture is the variational distribution:

$$\log p(x) >= ELBO = \int q(z) \log p(x, z) dz + H[q]$$

where $$p$$ is the prior disribution, $$q$$ is the variational, and $$H[q]$$ is the entropy of $$q$$. If there is a lower bound $$G[q]$$ such that $$H[q] \geq G[q]$$ then it can be used in place of $$H[q]$$.

For a mixture of distributions $$q(Z) = \sum_i c_i q_i(Z)$$ with $$\sum_i c_i = 1$$, by the concavity of $$f(x) = -x \log x$$, a simple lower bound is:

\begin{align} H[q] & = - \int q(z) \log q(z) dz \\ & = - \int (\sum_i c_i q_i(z)) \log(\sum_i c_i q_i(z)) dz \\ & \geq - \sum_i c_i \int q_i(z) \log q_i(z) dz \\ & = \sum_i c_i H[q_i] \end{align}

This is the term we calculate below for $$G[q]$$.

##### Args:
• name: A name for this operation (optional).
##### Returns:

A lower bound on the Mixture's entropy.

#### tf.contrib.distributions.Mixture.event_shape(name='event_shape')

Shape of a single sample from a single batch as a 1-D int32 Tensor.

##### Args:
• name: name to give to the op
##### Returns:
• event_shape: Tensor.

#### tf.contrib.distributions.Mixture.get_batch_shape()

Shape of a single sample from a single event index as a TensorShape.

Same meaning as batch_shape. May be only partially defined.

##### Returns:
• batch_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Mixture.get_event_shape()

Shape of a single sample from a single batch as a TensorShape.

Same meaning as event_shape. May be only partially defined.

##### Returns:
• event_shape: TensorShape, possibly unknown.

#### tf.contrib.distributions.Mixture.log_cdf(value, name='log_cdf')

Log cumulative distribution function.

Given random variable X, the cumulative distribution function cdf is:

log_cdf(x) := Log[ P[X <= x] ]


Often, a numerical approximation can be used for log_cdf(x) that yields a more accurate answer than simply taking the logarithm of the cdf when x << -1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• logcdf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Mixture.log_pdf(value, name='log_pdf')

Log probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Mixture.log_pmf(value, name='log_pmf')

Log probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Mixture.log_prob(value, name='log_prob')

Log probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• log_prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Mixture.log_survival_function(value, name='log_survival_function')

Log survival function.

Given random variable X, the survival function is defined:

log_survival_function(x) = Log[ P[X > x] ]
= Log[ 1 - P[X <= x] ]
= Log[ 1 - cdf(x) ]


Typically, different numerical approximations can be used for the log survival function, which are more accurate than 1 - cdf(x) when x >> 1.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

Mean.

Mode.

#### tf.contrib.distributions.Mixture.name

Name prepended to all ops created by this Distribution.

#### tf.contrib.distributions.Mixture.param_shapes(cls, sample_shape, name='DistributionParamShapes')

Shapes of parameters given the desired shape of a call to sample().

Subclasses should override static method _param_shapes.

##### Args:
• sample_shape: Tensor or python list/tuple. Desired shape of a call to sample().
• name: name to prepend ops with.
##### Returns:

dict of parameter name to Tensor shapes.

#### tf.contrib.distributions.Mixture.param_static_shapes(cls, sample_shape)

param_shapes with static (i.e. TensorShape) shapes.

##### Args:
• sample_shape: TensorShape or python list/tuple. Desired shape of a call to sample().
##### Returns:

dict of parameter name to TensorShape.

##### Raises:
• ValueError: if sample_shape is a TensorShape and is not fully defined.

#### tf.contrib.distributions.Mixture.parameters

Dictionary of parameters used by this Distribution.

#### tf.contrib.distributions.Mixture.pdf(value, name='pdf')

Probability density function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if not is_continuous.

#### tf.contrib.distributions.Mixture.pmf(value, name='pmf')

Probability mass function.

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• pmf: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.
##### Raises:
• AttributeError: if is_continuous.

#### tf.contrib.distributions.Mixture.prob(value, name='prob')

Probability density/mass function (depending on is_continuous).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:
• prob: a Tensor of shape sample_shape(x) + self.batch_shape with values of type self.dtype.

#### tf.contrib.distributions.Mixture.sample(sample_shape=(), seed=None, name='sample')

Generate samples of the specified shape.

Note that a call to sample() without arguments will generate a single sample.

##### Args:
• sample_shape: 0D or 1D int32 Tensor. Shape of the generated samples.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with prepended dimensions sample_shape.

#### tf.contrib.distributions.Mixture.sample_n(n, seed=None, name='sample_n')

Generate n samples.

##### Args:
• n: Scalar Tensor of type int32 or int64, the number of observations to sample.
• seed: Python integer seed for RNG
• name: name to give to the op.
##### Returns:
• samples: a Tensor with a prepended dimension (n,).
##### Raises:
• TypeError: if n is not an integer type.

#### tf.contrib.distributions.Mixture.std(name='std')

Standard deviation.

#### tf.contrib.distributions.Mixture.survival_function(value, name='survival_function')

Survival function.

Given random variable X, the survival function is defined:

survival_function(x) = P[X > x]
= 1 - P[X <= x]
= 1 - cdf(x).

##### Args:
• value: float or double Tensor.
• name: The name to give this op.
##### Returns:

Tensorof shapesample_shape(x) + self.batch_shapewith values of typeself.dtype.

#### tf.contrib.distributions.Mixture.validate_args

Python boolean indicated possibly expensive checks are enabled.

Variance.