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, или если ни p, ни logits не переданы. |
| Атрибуты | |
|---|---|
allow_nan_stats | Python bool описывающий поведение, когда статистика не определена. Статистики возвращают +/- бесконечность, когда это имеет смысл. Например, дисперсия распределения Коши равна бесконечности. Однако иногда статистика не определена, например, если плотность распределения не достигает максимума в области определения распределения, мода не определена. Если среднее значение не определено, то по определению дисперсия тоже не определена. Например, среднее значение для распределения Стьюдента при df = 1 не определено (нет ясного способа сказать, что это либо +∞, либо -∞), поэтому дисперсия = E[(X - среднее)**2] тоже не определена. |
batch_shape | Форма одной выборки из одного индекса события в виде TensorShape. Может быть частично определена или неизвестна. Размерности пакета являются индексами независимых, нетождественных параметризаций этого распределения. |
dtype | Размерность DType обрабатываемых этим 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'
)
Форма одной выборки из одного индекса события в виде 1-мерного 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 с формой [B1, ..., Bn] представляющее различные вычисления (энтропии Шеннона) кросс-энтропии. |
entropy
entropy(
name='entropy'
)
Энтропия Шеннона в натах.
event_shape_tensor
event_shape_tensor(
name='event_shape_tensor'
)
Форма одного образца из одной партии в виде одномерного целого числа типа 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 | тензор 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 | имя для добавления к операциям. |
| Возвращаемое значение | |
|---|---|
словарь 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 | тензор формы 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 | тензор формы 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 | Префикс 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.3/api_docs/python/tf/compat/v1/distributions/Bernoulli