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 | Python bool, по умолчанию False. Когда True параметры распределения проверяются на корректность, несмотря на возможное ухудшение производительности во время выполнения. Когда False некорректные входные данные могут безмолвно привести к неправильным результатам. |
allow_nan_stats | Python bool, по умолчанию True. Когда True, статистические данные (например, среднее значение, мода, дисперсия) используют значение «NaN», чтобы указать, что результат не определён. Когда False, возникает исключение, если один или несколько из элементов набора статистики не определены. |
name | Имя Python str, добавляемое к операциям, созданным этим классом. |
| Исключения | |
|---|---|
TypeError | если loc и scale имеют разные типы данных. |
| Атрибуты | |
|---|---|
allow_nan_stats | Python bool описывает поведение при неопределённости статистики. Статистические данные возвращают +/- бесконечность, когда это имеет смысл. Например, дисперсия распределения Коши равна бесконечности. Однако иногда статистическая величина не определена, например, если функция плотности распределения не достигает максимума в области определения распределения, мода не определена. Если среднее значение не определено, то по определению дисперсия также не определена. Например, среднее значение для распределения Стьюдента при df = 1 не определено (нет чёткого способа сказать, что оно либо + либо - бесконечность), поэтому дисперсия = E[(X - среднее значение)**2] также не определена. |
batch_shape | Форма одной выборки из одного индекса события в виде TensorShape. Может быть частично определена или неизвестна. Размеры набора соответствуют индексам независимых, но не идентичных параметризаций этого распределения. |
dtype | Размер DType обработанных этим Distribution. |
event_shape | Форма одной выборки из одного набора в виде TensorShape. Может быть частично определена или неизвестна. |
loc | Параметр распределения для положения. |
name | Имя, добавляемое ко всем операциям, созданным этим Distribution. |
parameters | Словарь параметров, используемых для создания этого Distribution. |
reparameterization_type | Описание того, как образцы из распределения перепараметризуются. В настоящее время это один из статических экземпляров |
scale | Параметр распределения для масштаба. |
validate_args | Python bool указывающий на то, что, возможно, дорогостоящие проверки включены. |
Методы
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 | 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 | Плавающее число тензор с формой [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 | Плавающее число тензор с формой [B1, ..., Bn] представляющий n различные вычисления (энтропии Шеннона) кросс-энтропии. |
entropy
entropy(
name='entropy'
)
Энтропия Шеннона в натах.
event_shape_tensor
event_shape_tensor(
name='event_shape_tensor'
)
Форма одного образца из одной группы в виде одномерного целочисленного 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 | имя для добавления к операциям. |
| Возвращаемое значение | |
|---|---|
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 | Префикс 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(). |
© 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/versions/r2.9/api_docs/python/tf/compat/v1/distributions/Laplace