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 Tensors, обрабатываемых этим 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 | Вещественный 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-мерного int32 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 | тензор формы 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 | тензор формы 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 добавляется к именам операций, созданных этой функцией. |
| Возвращаемые значения | |
|---|---|
тензор формы 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
)
param_shapes со статическими (т.е. TensorShape) формами.
Это метод класса, описывающий какие пары ключ/значение необходимы для создания экземпляра данного 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/r2.4/api_docs/python/tf/compat/v1/distributions/Laplace