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 - среднее значение)**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(
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(
name='entropy'
)
Энтропия Шеннона в натах.
Вектор формы события
event_shape_tensor(
name='event_shape_tensor'
)
Форма одного образца из одного пакета в виде 1-мерного целочисленного вектора int32 Tensor.
| Аргументы | |
|---|---|
name | имя, которое нужно дать операции |
| Возвращаемое значение | |
|---|---|
event_shape | Tensor. |
Является ли пакет скаляром
is_scalar_batch(
name='is_scalar_batch'
)
Указывает, что batch_shape == [].
| Аргументы | |
|---|---|
name | Python str добавленное к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
is_scalar_batch | Скаляр bool Tensor. |
Является ли событие скаляром
is_scalar_event(
name='is_scalar_event'
)
Указывает, что event_shape == [].
| Аргументы | |
|---|---|
name | Python str добавленное к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
is_scalar_event | Скаляр bool Tensor. |
Расхождение Кульбака—Лейблера
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(
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(
value, name='log_prob'
)
Логарифм функции плотности/массы вероятности.
| Аргументы | |
|---|---|
value | float или double Tensor. |
name | Python str добавленное к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
log_prob | тензор формы sample_shape(x) + self.batch_shape со значениями типа self.dtype. |
Логарифм функции выживания
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(
name='mean'
)
Среднее значение.
Мода
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, добавляемая в качестве префикса к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
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, добавляемая в качестве префикса к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
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, добавляемая в качестве префикса к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
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, добавляемая в качестве префикса к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
тензор 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, добавляемая в качестве префикса к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
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