tf.compat.v1.distributions.Laplace
Распределение Лапласа с параметрами положения loc и scale.
Наследует: Distribution
tf.compat.v1.distributions.Laplace(
loc,
scale,
validate_args=False,
allow_nan_stats=True,
name='Laplace'
)
Математические подробности
Функция плотности вероятности (pdf) этого распределения имеет вид:
pdf(x; mu, sigma) = exp(-|x - mu| / sigma) / Z Z = 2 sigma
где loc = mu, scale = sigma, а Z — нормировочная константа.
Обратите внимание, что распределение Лапласа можно представить как два экспоненциальных распределения, соединённых «спина к спине».
Распределение Лапласа относится к семейству распределений положения и масштаба, то есть его можно построить следующим образом:
X ~ Laplace(loc=0, scale=1) Y = loc + scale * X
| Аргументы | |
|---|---|
loc | Тензор с числами с плавающей запятой, задающий положение (центр) распределения. |
scale | Положительный тензор с числами с плавающей запятой, задающий разброс распределения. |
validate_args | bool Python, по умолчанию False. Если True, параметры распределения проверяются на корректность, несмотря на возможное снижение производительности во время выполнения. Если False, недопустимые входные данные могут незаметно приводить к неправильным результатам. |
allow_nan_stats | bool Python, по умолчанию True. Если True, статистические характеристики (например, среднее, мода, дисперсия) используют значение «NaN», чтобы указать, что результат не определён. Если False, возникает исключение, если одна или несколько статистик для элементов пакета не определены. |
name | Имя str Python, добавляемое перед Ops, создаваемыми этим классом. |
| Вызывает исключения | |
|---|---|
TypeError | если loc и scale имеют разные типы данных. |
| Атрибуты | |
|---|---|
allow_nan_stats | bool Python, описывающий поведение в случае неопределённой статистической характеристики. Статистические характеристики возвращают +/- бесконечность, если это имеет смысл. Например, дисперсия распределения Коши равна бесконечности. Однако иногда статистическая характеристика не определена. Например, если плотность вероятности распределения не достигает максимума в пределах его области определения, мода не определена. Если среднее не определено, то по определению не определена и дисперсия. Например, среднее распределения Стьюдента с df = 1 не определено (невозможно однозначно сказать, равно ли оно + или - бесконечности), поэтому дисперсия = E[(X - mean)**2] также не определена. |
batch_shape | Форма одной выборки для одного индекса события в виде TensorShape. Может быть определена частично или неизвестна. Размерности пакета являются индексами независимых, неодинаково параметризованных экземпляров этого распределения. |
dtype | DType Tensor, обрабатываемых этим Distribution. |
event_shape | Форма одной выборки для одного пакета в виде TensorShape. Может быть определена частично или неизвестна. |
loc | Параметр распределения, задающий положение. |
name | Имя, добавляемое перед всеми операциями, создаваемыми этим Distribution. |
parameters | Словарь параметров, используемых для создания экземпляра этого Distribution. |
reparameterization_type | Описывает способ репараметризации выборок из распределения. В настоящее время это один из статических экземпляров |
scale | Параметр распределения, задающий масштаб. |
validate_args | bool Python, указывающий, что включены потенциально затратные проверки. |
Методы
batch_shape_tensor
batch_shape_tensor(
name='batch_shape_tensor'
)
Форма одной выборки для одного индекса события в виде одномерного Tensor.
Размерности пакета являются индексами независимых, неодинаково параметризованных экземпляров этого распределения.
| Аргументы | |
|---|---|
name | имя операции |
| Возвращает | |
|---|---|
batch_shape | Tensor. |
cdf
cdf(
value, name='cdf'
)
Функция распределения.
Для случайной величины X функция распределения cdf имеет вид:
cdf(x) := P[X <= x]
| Аргументы | |
|---|---|
value | float или double Tensor. |
name | str Python, добавляемое перед именами операций, создаваемых этой функцией. |
| Возвращает | |
|---|---|
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 | str Python, добавляемое перед именами операций, создаваемых этой функцией. |
| Возвращает | |
|---|---|
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 | str Python, добавляемое перед именами операций, создаваемых этой функцией. |
| Возвращает | |
|---|---|
cross_entropy | self.dtype Tensor формы [B1, ..., Bn], представляющий n различных вычислений перекрёстной энтропии (Шеннона). |
entropy
entropy(
name='entropy'
)
Энтропия Шеннона в натах.
event_shape_tensor
event_shape_tensor(
name='event_shape_tensor'
)
Форма одной выборки для одного пакета в виде одномерного тензора int32 Tensor.
| Аргументы | |
|---|---|
name | имя операции |
| Возвращает | |
|---|---|
event_shape | Tensor. |
is_scalar_batch
is_scalar_batch(
name='is_scalar_batch'
)
Указывает, что batch_shape == [].
| Аргументы | |
|---|---|
name | str Python, добавляемое перед именами операций, создаваемых этой функцией. |
| Возвращает | |
|---|---|
is_scalar_batch | bool скалярный Tensor. |
is_scalar_event
is_scalar_event(
name='is_scalar_event'
)
Указывает, что event_shape == [].
| Аргументы | |
|---|---|
name | str Python, добавляемое перед именами операций, создаваемых этой функцией. |
| Возвращает | |
|---|---|
is_scalar_event | bool скалярный Tensor. |
kl_divergence
kl_divergence(
other, name='kl_divergence'
)
Вычисляет дивергенцию Кульбака — Лейблера.
Обозначим это распределение (self) через p, а other распределение — через q. Предполагая, что p, q абсолютно непрерывны относительно меры сравнения r, дивергенция KL определяется так:
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 | str Python, добавляемое перед именами операций, создаваемых этой функцией. |
| Возвращает | |
|---|---|
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 | str Python, добавляемое перед именами операций, создаваемых этой функцией. |
| Возвращает | |
|---|---|
logcdf | Tensor формы sample_shape(x) + self.batch_shape со значениями типа self.dtype. |
log_prob
log_prob(
value, name='log_prob'
)
Логарифм функции плотности/массы вероятности.
| Аргументы | |
|---|---|
value | float или double Tensor. |
name | str Python, добавляемое перед именами операций, создаваемых этой функцией. |
| Возвращает | |
|---|---|
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 | str Python, добавляемое перед именами операций, создаваемых этой функцией. |
| Возвращает | |
|---|---|
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 | имя, добавляемое перед операциями. |
| Возвращает | |
|---|---|
dict имени параметра в Tensor формы. |
param_static_shapes
@classmethod
param_static_shapes(
sample_shape
)
param_shapes со статическими (то есть TensorShape) формами.
Это метод класса, описывающий, какие аргументы «ключ/значение» требуются для создания заданного Distribution, чтобы вызов sample() для этого экземпляра возвращал форму определённого вида. Предполагается, что форма выборки известна статически.
Подклассам следует переопределять метод класса _param_shapes, чтобы возвращать тензоры с постоянными значениями, если передаются постоянные значения.
| Аргументы | |
|---|---|
sample_shape | TensorShape или список/кортеж Python. Требуемая форма вызова sample(). |
| Возвращает | |
|---|---|
dict имени параметра в TensorShape. |
| Вызывает исключения | |
|---|---|
ValueError | если sample_shape является TensorShape и определена не полностью. |
prob
prob(
value, name='prob'
)
Функция плотности/массы вероятности.
| Аргументы | |
|---|---|
value | float или double Tensor. |
name | str Python, добавляемое перед именами операций, создаваемых этой функцией. |
| Возвращает | |
|---|---|
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 | str Python, добавляемое перед именами операций, создаваемых этой функцией. |
| Возвращает | |
|---|---|
quantile | Tensor формы sample_shape(x) + self.batch_shape со значениями типа self.dtype. |
sample
sample(
sample_shape=(), seed=None, name='sample'
)
Создаёт выборки заданной формы.
Обратите внимание, что вызов sample() без аргументов создаёт одну выборку.
| Аргументы | |
|---|---|
sample_shape | int32 Tensor размерности 0 или 1. Форма созданных выборок. |
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 | str Python, добавляемое перед именами операций, создаваемых этой функцией. |
| Возвращает | |
|---|---|
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(). |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/compat/v1/distributions/Laplace