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 объектов Tensor, обрабатываемых этим 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'
)
Форма одной выборки для одного элемента пакета в виде одномерного 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 определяется следующим образом:
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 | 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. Форма генерируемых выборок. |
seed | Целочисленное значение Python — начальное значение для RNG |
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/Bernoulli