tf.compat.v1.distributions.Bernoulli
Распределение Бернулли.
Наследуется от: Distribution
tf.compat.v1.distributions.Bernoulli(
logits=None,
probs=None,
dtype=tf.dtypes.int32,
validate_args=False,
allow_nan_stats=True,
name='Bernoulli'
)
Распределение Бернулли с параметром probs, то есть вероятностью 1 результата (по сравнению с 0 результатом).
| Аргументы | |
|---|---|
logits | N-мерный Tensor, представляющий логарифмические шансы события 1. Каждый элемент в Tensor параметризует независимое распределение Бернулли, где вероятность события равна sigmoid(logits). Должен быть передан только один из logits или probs. |
probs | N-мерный Tensor представляющий вероятность события 1. Каждый элемент в Tensor параметризует независимое распределение Бернулли. Должен быть передан только один из logits или probs. |
dtype | Тип образцов событий. По умолчанию: int32. |
validate_args | Python bool, по умолчанию False. При True параметрах распределения проверяются на валидность, несмотря на возможную деградацию производительности выполнения. При False невалидные входные данные могут молча привести к некорректным результатам. |
allow_nan_stats | Python bool, по умолчанию True. При True, статистические данные (например, среднее, мода, дисперсия) используют значение "NaN" для указания того, что результат не определен. При False, генерируется исключение, если один или несколько элементов в наборе статистических данных не определены. |
name | Префикс имени Python str к операциям, созданным этим классом. |
| Возбуждает | |
|---|---|
ValueError | Если p и logits переданы, или если ни один из них не передан. |
| Атрибуты | |
|---|---|
allow_nan_stats | Python bool, описывающий поведение, когда статистика не определена. Статистики возвращают +/- бесконечность, когда это имеет смысл. Например, дисперсия распределения Коши равна бесконечности. Однако иногда статистика не определена, например, если плотность распределения не достигает максимума в области определения распределения, мода не определена. Если среднее не определено, то по определению дисперсия также не определена. Например, среднее для распределения Стьюдента при df = 1 не определено (нет четкого способа сказать, что это либо + или - бесконечность), поэтому дисперсия = E[(X - mean)**2] также не определена. |
batch_shape | Форма одного образца из одного индекса события в виде TensorShape. Может быть частично определена или неизвестна. Размеры набора — индексы независимых, нетождественных параметризаций этого распределения. |
dtype | Размер DType из Tensors, обрабатываемых этим Distribution. |
event_shape | Форма одного образца из одного набора в виде TensorShape. Может быть частично определена или неизвестна. |
logits | Логарифмические шансы 1 результата (по сравнению с 0). |
name | Префикс имени, добавляемый ко всем операциям, созданным этим Distribution. |
parameters | Словарь параметров, используемых для создания этого Distribution. |
probs | Вероятность 1 результата (по сравнению с 0). |
reparameterization_type | Описание того, как образцы из распределения перепараметризуются. В настоящее время это один из статических экземпляров |
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'
)
Форма одного образца из одной группы в виде одномерного целого 32-битного числа 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'
)
Мода.
Дополнительная документация из Bernoulli:
Возвращает 1 , если prob > 0.5, и 0 в противном случае.
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 | тензор формы sample_shape(x) + self.batch_shape со значениями типа self.dtype. |
quantile
quantile(
value, name='quantile'
)
Функция квантиля. Также известна как «обратная функция распределения» или «функция процентиля».
Для случайной величины X и p in [0, 1], квантиль равна:
quantile(p) := x such that P[X <= x] == p
| Аргументы | |
|---|---|
value | float или double Tensor. |
name | Префикс Python 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 | Целочисленный 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 | Префикс 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/Bernoulli