Spec-Zone.ru › TensorFlow

tf.compat.v1.distributions.Exponential

Экспоненциальное распределение.

Наследует: Gamma, Distribution

tf.compat.v1.distributions.Exponential(
    rate,
    validate_args=False,
    allow_nan_stats=True,
    name='Exponential'
)

Экспоненциальное распределение параметризуется параметром события rate.

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

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

pdf(x; lambda, x > 0) = exp(-lambda x) / Z
Z = 1 / lambda

где rate = lambda, а Z — нормирующая константа.

Экспоненциальное распределение является частным случаем гамма-распределения, то есть

Exponential(rate) = Gamma(concentration=1., rate)

В экспоненциальном распределении используется параметр rate, или «обратный масштаб», который можно понимать следующим образом:

X ~ Exponential(rate=1)
Y = X / rate
Аргументы
rate Тензор с плавающей точкой, эквивалентный 1 / mean. Должен содержать только положительные значения.
validate_args Python bool, по умолчанию False. Если True, параметры распределения проверяются на допустимость, хотя это может снизить производительность во время выполнения. Если False, некорректные входные данные могут незаметно приводить к неверным результатам.
allow_nan_stats Python bool, по умолчанию True. Если True, для обозначения неопределённого результата в статистических характеристиках (например, среднем, моде, дисперсии) используется значение «NaN». Если False, возникает исключение, когда одна или несколько характеристик для элементов пакета не определены.
name Имя Python str, добавляемое в начало операций, создаваемых этим классом.
Атрибуты
allow_nan_stats Python bool, определяющий поведение в случае неопределённой статистической характеристики.

Статистические характеристики возвращают +/- бесконечность, когда это имеет смысл. Например, дисперсия распределения Коши равна бесконечности. Однако иногда характеристика не определена. Например, если плотность распределения не достигает максимума в пределах его носителя, мода не определена. Если не определено математическое ожидание, то по определению не определена и дисперсия. Например, математическое ожидание распределения Стьюдента при df = 1 не определено (невозможно однозначно утверждать, что оно равно + или - бесконечности), поэтому дисперсия E[(X - mean)**2] также не определена.

batch_shape Форма одной выборки для одного индекса события в виде TensorShape.

Может быть определена частично или быть неизвестной.

Размерности пакета — это индексы независимых, неидентичных параметризаций данного распределения.

concentration Параметр концентрации.
dtype DType объектов Tensor, обрабатываемых этим Distribution.
event_shape Форма одной выборки для одного элемента пакета в виде TensorShape.

Может быть определена частично или быть неизвестной.

name Имя, добавляемое в начало всех операций, создаваемых этим Distribution.
parameters Словарь параметров, используемых для создания экземпляра этого Distribution.
rate Параметр интенсивности.
reparameterization_type Описывает способ репараметризации выборок из распределения.

В настоящее время это один из статических экземпляров: distributions.FULLY_REPARAMETERIZED или distributions.NOT_REPARAMETERIZED.

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'
)

Форма одной выборки для одного элемента пакета в виде одномерного Tensor int32.

Аргументы
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 определяется следующим образом:

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'
)

Мода.

Дополнительная документация из Gamma:

Мода гамма-распределения равна (shape - 1) / rate, если shape > 1, и NaN в противном случае. Если self.allow_nan_stats равно False, будет вызвано исключение вместо возврата NaN.

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 int32 Tensor размерности 0 или 1. Форма генерируемых выборок.
seed Целочисленное значение 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/api_docs/python/tf/compat/v1/distributions/Exponential

Spec-Zone.ru

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