Spec-Zone.ru › TensorFlow 1.15

tf.contrib.distributions.PoissonLogNormalQuadratureCompound

PoissonLogNormalQuadratureCompound распределение.

Наследуется от: Distribution

tf.contrib.distributions.PoissonLogNormalQuadratureCompound(
    loc, scale, quadrature_size=8,
    quadrature_fn=tf.contrib.distributions.quadrature_scheme_lognormal_quantiles,
    validate_args=False, allow_nan_stats=True,
    name='PoissonLogNormalQuadratureCompound'
)

PoissonLogNormalQuadratureCompound представляет собой приближение к составному распределению Пуассона-Логнормального составного распределения, т.е.,

p(k|loc, scale)
= int_{R_+} dl LogNormal(l | loc, scale) Poisson(k | l)
approx= sum{ prob[d] Poisson(k | lambda(grid[d])) : d=0, ..., deg-1 }

По умолчанию grid выбираются как квантили LogNormal распределения, параметризованного loc, scale, и вектор prob равен [1. / quadrature_size]*quadrature_size.

В случае без приближения, выборка из логнормального априорного распределения представляет собой параметр скорости Пуассона. К сожалению, у неопределенного распределения нет аналитической функции плотности вероятности (pdf). Поэтому класс PoissonLogNormalQuadratureCompound реализует приближение, основанное на квадратуре.

Примечание: хотя PoissonLogNormalQuadratureCompound приблизительно соответствует составному распределению Пуассона-Логнормального распределения, оно само по себе является допустимым распределением. Например, у него есть sample, log_prob, mean, variance, и т.д., которые все взаимосогласованы.

Математические подробности

PoissonLogNormalQuadratureCompound приближает составное распределение Пуассона-Логнормального составного распределения. Используя подстановку переменных и численную квадратуру (по умолчанию: на основе LogNormal квантилей), мы можем переопределить распределение как беспараметрическую выпуклую комбинацию deg различных выборок Пуассона.

То есть, определено на положительных целых числах, это распределение параметризовано (набором) loc и scale скалярами.

Функция плотности вероятности (pdf) равна,

pdf(k | loc, scale, deg)
  = sum{ prob[d] Poisson(k | lambda=exp(grid[d]))
        : d=0, ..., deg-1 }

Примеры

import tensorflow_probability as tfp
tfd = tfp.distributions

# Create two batches of PoissonLogNormalQuadratureCompounds, one with
# prior `loc = 0.` and another with `loc = 1.` In both cases `scale = 1.`
pln = tfd.PoissonLogNormalQuadratureCompound(
    loc=[0., -0.5],
    scale=1.,
    quadrature_size=10,
    validate_args=True)

<!-- Tabular view -->
 <table class="responsive fixed orange">
<colgroup><col width="214px"><col></colgroup>
<tr><th colspan="2"><h2 class="add-link">Args</h2></th></tr>

<tr>
<td>
`loc`
</td>
<td>
`float`-like (batch of) scalar `Tensor`; the location parameter of
the LogNormal prior.
</td>
</tr><tr>
<td>
`scale`
</td>
<td>
`float`-like (batch of) scalar `Tensor`; the scale parameter of
the LogNormal prior.
</td>
</tr><tr>
<td>
`quadrature_size`
</td>
<td>
Python `int` scalar representing the number of quadrature
points.
</td>
</tr><tr>
<td>
`quadrature_fn`
</td>
<td>
Python callable taking `loc`, `scale`,
`quadrature_size`, `validate_args` and returning `tuple(grid, probs)`
representing the LogNormal grid and corresponding normalized weight.
normalized) weight.
Default value: `quadrature_scheme_lognormal_quantiles`.
</td>
</tr><tr>
<td>
`validate_args`
</td>
<td>
Python `bool`, default `False`. When `True` distribution
parameters are checked for validity despite possibly degrading runtime
performance. When `False` invalid inputs may silently render incorrect
outputs.
</td>
</tr><tr>
<td>
`allow_nan_stats`
</td>
<td>
Python `bool`, default `True`. When `True`,
statistics (e.g., mean, mode, variance) use the value "`NaN`" to
indicate the result is undefined. When `False`, an exception is raised
if one or more of the statistic's batch members are undefined.
</td>
</tr><tr>
<td>
`name`
</td>
<td>
Python `str` name prefixed to Ops created by this class.
</td>
</tr>
</table>



<!-- Tabular view -->
 <table class="responsive fixed orange">
<colgroup><col width="214px"><col></colgroup>
<tr><th colspan="2"><h2 class="add-link">Raises</h2></th></tr>

<tr>
<td>
`TypeError`
</td>
<td>
if `quadrature_grid` and `quadrature_probs` have different base
`dtype`.
</td>
</tr>
</table>





<!-- Tabular view -->
 <table class="responsive fixed orange">
<colgroup><col width="214px"><col></colgroup>
<tr><th colspan="2"><h2 class="add-link">Attributes</h2></th></tr>

<tr>
<td>
`allow_nan_stats`
</td>
<td>
Python `bool` 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.
</td>
</tr><tr>
<td>
`batch_shape`
</td>
<td>
Shape of a single sample from a single event index as a `TensorShape`.

May be partially defined or unknown.

The batch dimensions are indexes into independent, non-identical
parameterizations of this distribution.
</td>
</tr><tr>
<td>
`distribution`
</td>
<td>
Base Poisson parameterized by a quadrature grid.
</td>
</tr><tr>
<td>
`dtype`
</td>
<td>
The `DType` of `Tensor`s handled by this `Distribution`.
</td>
</tr><tr>
<td>
`event_shape`
</td>
<td>
Shape of a single sample from a single batch as a `TensorShape`.

May be partially defined or unknown.
</td>
</tr><tr>
<td>
`loc`
</td>
<td>
Location parameter of the LogNormal prior.
</td>
</tr><tr>
<td>
`mixture_distribution`
</td>
<td>
Distribution which randomly selects a Poisson with quadrature param.
</td>
</tr><tr>
<td>
`name`
</td>
<td>
Name prepended to all ops created by this `Distribution`.
</td>
</tr><tr>
<td>
`parameters`
</td>
<td>
Dictionary of parameters used to instantiate this `Distribution`.
</td>
</tr><tr>
<td>
`quadrature_size`
</td>
<td>

</td>
</tr><tr>
<td>
`reparameterization_type`
</td>
<td>
Describes how samples from the distribution are reparameterized.

Currently this is one of the static instances
`distributions.FULLY_REPARAMETERIZED`
or `distributions.NOT_REPARAMETERIZED`.
</td>
</tr><tr>
<td>
`scale`
</td>
<td>
Scale parameter of the LogNormal prior.
</td>
</tr><tr>
<td>
`validate_args`
</td>
<td>
Python `bool` indicating possibly expensive checks are enabled.
</td>
</tr>
</table>



## Methods

<h3 id="batch_shape_tensor"><code>batch_shape_tensor</code></h3>

<a target="_blank" href="https://github.com/tensorflow/tensorflow/blob/v1.15.0/tensorflow/python/ops/distributions/distribution.py#L637-L654">View source</a>

<pre class="devsite-click-to-copy prettyprint lang-py tfo-signature-link">
<code>batch_shape_tensor(
    name='batch_shape_tensor'
)
</code></pre>

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

The batch dimensions are indexes into independent, non-identical
parameterizations of this distribution.

<!-- Tabular view -->
 <table class="responsive fixed orange">
<colgroup><col width="214px"><col></colgroup>
<tr><th colspan="2">Args</th></tr>

<tr>
<td>
`name`
</td>
<td>
name to give to the op
</td>
</tr>
</table>



<!-- Tabular view -->
 <table class="responsive fixed orange">
<colgroup><col width="214px"><col></colgroup>
<tr><th colspan="2">Returns</th></tr>

<tr>
<td>
`batch_shape`
</td>
<td>
`Tensor`.
</td>
</tr>
</table>



<h3 id="cdf"><code>cdf</code></h3>

<a target="_blank" href="https://github.com/tensorflow/tensorflow/blob/v1.15.0/tensorflow/python/ops/distributions/distribution.py#L881-L898">View source</a>

<pre class="devsite-click-to-copy prettyprint lang-py tfo-signature-link">
<code>cdf(
    value, name='cdf'
)
</code></pre>

Cumulative distribution function.

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

```none
cdf(x) := P[X <= x]
Аргументы
value float или double Tensor.
name Python str перед именами операций, созданных этой функцией.
Возвращаемые значения
cdf Tensor формы sample_shape(x) + self.batch_shape со значениями типа self.dtype.

copy

Просмотр исходного кода

copy(
    **override_parameters_kwargs
)

Создает глубокую копию распределения.

Примечание: распределение копии может продолжать зависеть от исходных аргументов инициализации.
Аргументы
**override_parameters_kwargs Словарь строк/значений аргументов инициализации для переопределения с новыми значениями.
Возвращаемые значения
distribution Новый экземпляр type(self), инициализированный из объединения self.parameters и override_parameters_kwargs, т.е., dict(self.parameters, **override_parameters_kwargs).

covariance

Просмотр исходного кода

covariance(
    name='covariance'
)

Ковариация.

Ковариация (возможно) определена только для распределений с нескалярным событием.

Например, для распределения со значениями длины k, вектора, она вычисляется как,

Cov[i, j] = Covariance(X_i, X_j) = E[(X_i - E[X_i]) (X_j - E[X_j])]

где Cov представляет собой (набор) k x k матрицу, 0 <= (i, j) < k, и E обозначает математическое ожидание.

В качестве альтернативы, для невекторных, многомерных распределений (например, матричного, Вишарта), Covariance возвращает (набор) матриц в соответствии с некоторой векторизацией событий, т.е.,

Cov[i, j] = Covariance(Vec(X)_i, Vec(X)_j) = [as above]

где Cov представляет собой (набор) k' x k' матриц, 0 <= (i, j) < k' = reduce_prod(event_shape), а Vec — это некоторая функция, отображающая индексы размерностей событий этого распределения на индексы вектора длины k'.

Аргументы
name Python str перед именами операций, созданных этой функцией.
Возвращаемые значения
covariance Плавающая точка Tensor с формой [B1, ..., Bn, k', k'], где первые n измерения — это координаты пакета, а k' = reduce_prod(self.event_shape).

cross_entropy

Просмотр исходного кода

cross_entropy(
    other, name='cross_entropy'
)

Вычисляет (энтропию Шеннона) кросс-энтропию.

Обозначим это распределение (self) как P и распределение other как Q. Предполагая, что P, Q абсолютно непрерывны друг относительно друга и допускают плотности p(x) dr(x) и q(x) dr(x), (энтропия Шеннона) кросс-энтропия определяется как:

H[P, Q] = E_p[-log q(X)] = -int_F p(x) log q(x) dr(x)

где F обозначает область определения случайной величины X ~ P.

Аргументы
other Экземпляр tfp.distributions.Distribution.
name Python str перед именами операций, созданных этой функцией.
Возвращаемые значения
cross_entropy self.dtype Tensor с формой [B1, ..., Bn] представляющей n различные вычисления (энтропии Шеннона) кросс-энтропии.

entropy

Просмотр исходного кода

entropy(
    name='entropy'
)

Энтропия Шеннона в натах.

event_shape_tensor

Просмотр исходного кода

event_shape_tensor(
    name='event_shape_tensor'
)

Форма одного образца из одной партии в виде 1-мерного целочисленного Tensor.

Аргументы
name имя для операции
Возвращаемые значения
event_shape Tensor.

is_scalar_batch

Просмотр исходного кода

is_scalar_batch(
    name='is_scalar_batch'
)

Указывает, что batch_shape == [].

Аргументы
name Python str перед именами операций, созданных этой функцией.
Возвращаемые значения
is_scalar_batch bool скаляр Tensor.

is_scalar_event

Просмотр исходного кода

is_scalar_event(
    name='is_scalar_event'
)

Указывает, что event_shape == [].

Аргументы
name Python str перед именами операций, созданных этой функцией.
Возвращаемые значения
is_scalar_event bool скаляр Tensor.

kl_divergence

Просмотр исходного кода

kl_divergence(
    other, name='kl_divergence'
)

Вычисляет расхождение Кульбака—Лейблера.

Обозначим это распределение (self) как p и распределение other как q. Предполагая, что p, q абсолютно непрерывны относительно меры отсчёта r, расхождение Кульбака—Лейблера определяется как:

KL[p, q] = E_p[log(p(X)/q(X))]
         = -int_F p(x) log q(x) dr(x) + int_F p(x) log p(x) dr(x)
         = H[p, q] - H[p]

где F обозначает область определения случайной величины X ~ p, H[., .] обозначает (энтропию Шеннона) кросс-энтропию, а H[.] — (энтропию Шеннона) энтропию.

Аргументы
other Экземпляр tfp.distributions.Distribution.
name Python str перед именами операций, созданных этой функцией.
Возвращаемое значение
kl_divergence self.dtype Tensor с формой [B1, ..., Bn] , представляющей n различные вычисления расхождения Кульбака-Лайблера.

log_cdf

Посмотреть исходный код

log_cdf(
    value, name='log_cdf'
)

Логарифмическая кумулятивная функция распределения.

Для случайной величины X, кумулятивная функция распределения cdf равна:

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

Часто для log_cdf(x) можно использовать численное приближение, которое даёт более точный результат, чем просто взятие логарифма cdf при x << -1.

Аргументы
value float или double Tensor.
name Префикс Python str к именам операций, созданных этой функцией.
Возвращаемое значение
logcdf тензор Tensor формы sample_shape(x) + self.batch_shape со значениями типа self.dtype.

log_prob

Посмотреть исходный код

log_prob(
    value, name='log_prob'
)

Логарифм функции плотности/массы вероятности.

Аргументы
value float или double Tensor.
name Префикс Python str к именам операций, созданных этой функцией.
Возвращаемое значение
log_prob тензор Tensor формы sample_shape(x) + self.batch_shape со значениями типа self.dtype.

log_survival_function

Посмотреть исходный код

log_survival_function(
    value, name='log_survival_function'
)

Логарифм функции выживания.

Для случайной величины X, функция выживания определяется как:

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

Обычно для логарифмической функции выживания можно использовать различные численные приближения, которые более точны, чем 1 - cdf(x) при x >> 1.

Аргументы
value float или double Tensor.
name Префикс Python str к именам операций, созданных этой функцией.
Возвращаемое значение
тензор Tensor формы sample_shape(x) + self.batch_shape со значениями типа self.dtype.

mean

Посмотреть исходный код

mean(
    name='mean'
)

Математическое ожидание.

mode

Посмотреть исходный код

mode(
    name='mode'
)

Мода.

param_shapes

Посмотреть исходный код

@classmethod
param_shapes(
    sample_shape, name='DistributionParamShapes'
)

Формы параметров, заданных желаемой формой вызова sample().

Это метод класса, описывающий необходимые пары «ключ-значение» для создания экземпляра данного Distribution, чтобы при вызове sample() для этого экземпляра возвращалась определенная форма.

Подклассы должны переопределять метод класса _param_shapes.

Аргументы
sample_shape Tensor или список/кортеж Python. Желаемая форма вызова sample().
name Имя для добавления префикса к операциям.
Возвращаемое значение
Словарь, сопоставляющий имя параметра с Tensor формами.

param_static_shapes

Посмотреть исходный код

@classmethod
param_static_shapes(
    sample_shape
)

TensorShape формы для Distribution с параметрами sample().

Это метод класса, описывающий необходимые пары «ключ-значение» для создания экземпляра данного Distribution, чтобы при вызове sample() для этого экземпляра возвращалась определенная форма. Предполагается, что форма выборки известна статически.

Подклассы должны переопределять метод класса _param_shapes для возврата тензоров с постоянными значениями при подаче постоянных значений.

Аргументы
sample_shape TensorShape или список/кортеж Python. Желаемая форма вызова sample().
Возвращаемое значение
Словарь, сопоставляющий имя параметра с TensorShape формами.
Исключения
ValueError если sample_shape является TensorShape и не определён полностью.

prob

Посмотреть исходный код

prob(
    value, name='prob'
)

Функция плотности/массы вероятности.

Аргументы
value float или double Tensor.
name Префикс Python str к именам операций, созданных этой функцией.
Возвращаемое значение
prob тензор Tensor формы sample_shape(x) + self.batch_shape со значениями типа self.dtype.

quantile

Посмотреть исходный код

quantile(
    value, name='quantile'
)

Функция квантиля. Также известна как обратная кумулятивная функция или функция процентиля.

Для случайной величины X и p in [0, 1], quantile равна:

quantile(p) := x such that P[X <= x] == p
Аргументы
value float или double Tensor.
name Префикс Python str к именам операций, созданных этой функцией.
Возвращаемое значение
quantile тензор Tensor формы sample_shape(x) + self.batch_shape со значениями типа self.dtype.

sample

Посмотреть исходный код

sample(
    sample_shape=(), seed=None, name='sample'
)

Генерация выборок заданной формы.

Обратите внимание, что вызов sample() без аргументов сгенерирует одну выборку.

Аргументы
sample_shape 0D или 1D int32 Tensor. Форма генерируемых выборок.
seed Целое число Python, используемое для инициализации генератора случайных чисел.
name Имя для операции.
Возвращаемое значение
samples тензор Tensor с добавленными измерениями sample_shape.

stddev

Посмотреть исходный код

stddev(
    name='stddev'
)

Среднее квадратическое отклонение.

Среднее квадратическое отклонение определяется как,

stddev = E[(X - E[X])**2]**0.5

где X — случайная величина, связанная с этим распределением, E обозначает математическое ожидание, и stddev.shape = batch_shape + event_shape.

Аргументы
name Префикс Python str к именам операций, созданных этой функцией.
Возвращает
stddev Число с плавающей точкой Tensor с формой, идентичной batch_shape + event_shape, то есть с той же формой, что и self.mean().

survival_function

Просмотреть исходный код

survival_function(
    value, name='survival_function'
)

Функция выживаемости.

Для случайной величины X, функция выживаемости определяется следующим образом:

survival_function(x) = P[X > x]
                     = 1 - P[X <= x]
                     = 1 - cdf(x).
Аргументы
value float или double Tensor.
name Префикс Python str добавляется к именам операций, созданных этой функцией.
Возвращает
Tensor формы sample_shape(x) + self.batch_shape со значениями типа self.dtype.

variance

Просмотреть исходный код

variance(
    name='variance'
)

Дисперсия.

Дисперсия определяется как,

Var = E[(X - E[X])**2]

где X — случайная величина, связанная с этим распределением, E обозначает математическое ожидание, а Var.shape = batch_shape + event_shape.

Аргументы
name Префикс Python str добавляется к именам операций, созданных этой функцией.
Возвращает
variance Число с плавающей точкой Tensor с формой, идентичной batch_shape + event_shape, то есть с той же формой, что и self.mean().

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/contrib/distributions/PoissonLogNormalQuadratureCompound

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API