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, описывающий поведение, когда статистическая величина не определена. Статистические данные возвращают ±бесконечность, когда это имеет смысл. Например, дисперсия распределения Коши равна бесконечности. Однако иногда статистическая величина не определена, например, если pdf распределения не достигает максимума в области определения распределения, мода не определена. Если среднее значение не определено, то по определению дисперсия также не определена. Например, среднее значение для распределения Стьюдента при df = 1 не определено (нет ясного способа сказать, что оно равно + или - бесконечности), поэтому дисперсия = E[(X - среднее)**2] также не определена. |
batch_shape | Форма одного образца из одного индекса события как TensorShape. Может быть частично определена или неизвестна. Размерные характеристики партии — это индексы независимых, но не идентичных параметризаций этого распределения. |
dtype | Размерность DType из Tensor, обрабатываемых этим 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 | тензор формы 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'.
| Args | |
|---|---|
name | Python str добавленное к именам операций, созданных этой функцией. |
| Returns | |
|---|---|
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.
| Args | |
|---|---|
other | Экземпляр класса tfp.distributions.Distribution. |
name | Python str добавленное к именам операций, созданных этой функцией. |
| Returns | |
|---|---|
cross_entropy | Численное значение self.dtype Tensor формы [B1, ..., Bn], представляющее n различные вычисления (энтропии Шеннона) перекрёстной энтропии. |
entropy
entropy(
name='entropy'
)
Энтропия Шеннона в натах.
event_shape_tensor
event_shape_tensor(
name='event_shape_tensor'
)
Форма одного образца из одного пакета в виде целочисленного массива 1-D int32 Tensor.
| Args | |
|---|---|
name | имя для операции |
| Returns | |
|---|---|
event_shape | Tensor. |
is_scalar_batch
is_scalar_batch(
name='is_scalar_batch'
)
Указывает, что batch_shape == [].
| Args | |
|---|---|
name | Python str добавленное к именам операций, созданных этой функцией. |
| Returns | |
|---|---|
is_scalar_batch | Скалярное значение bool Tensor. |
is_scalar_event
is_scalar_event(
name='is_scalar_event'
)
Указывает, что event_shape == [].
| Args | |
|---|---|
name | Python str добавленное к именам операций, созданных этой функцией. |
| Returns | |
|---|---|
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[.] обозначает (энтропию Шеннона) энтропию.
| Args | |
|---|---|
other | Экземпляр класса tfp.distributions.Distribution. |
name | Python str добавленное к именам операций, созданных этой функцией. |
| Returns | |
|---|---|
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.
| Args | |
|---|---|
value | float или double Tensor. |
name | Python str добавленное к именам операций, созданных этой функцией. |
| Returns | |
|---|---|
logcdf | массив Tensor формы sample_shape(x) + self.batch_shape с типами значений self.dtype. |
log_prob
log_prob(
value, name='log_prob'
)
Логарифмическая плотность/вероятностная функция.
| Args | |
|---|---|
value | float или double Tensor. |
name | Python str добавленное к именам операций, созданных этой функцией. |
| Returns | |
|---|---|
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.
| Args | |
|---|---|
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 | Строковый str, добавляемый к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
prob | тензор с формой 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, добавляемый к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
quantile | тензор с формой 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 | тензор с добавленными измерениями sample_shape. |
stddev
stddev(
name='stddev'
)
Стандартное отклонение.
Стандартное отклонение определяется как:
stddev = E[(X - E[X])**2]**0.5
где X — случайная величина, связанная с этим распределением, E обозначает математическое ожидание, и stddev.shape = batch_shape + event_shape.
| Аргументы | |
|---|---|
name | Строковый 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 | Строковый str, добавляемый к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
тензор с формой 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 | Строковый 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