tf.contrib.distributions.Deterministic
Скалярное Deterministic распределение на вещественной оси.
tf.contrib.distributions.Deterministic(
loc, atol=None, rtol=None, validate_args=False, allow_nan_stats=True,
name='Deterministic'
)
Скалярное Deterministic распределение параметризуется точкой [пакета] loc на вещественной оси. Распределение определено только в этой точке и соответствует случайной величине, которая является постоянной и равной loc.
См. Вырожденное распределение.
Математические подробности
Функция вероятности (pmf) и функция распределения (cdf) равны
pmf(x; loc) = 1, if x == loc, else 0 cdf(x; loc) = 1, if x >= loc, else 0
Примеры
import tensorflow_probability as tfp tfd = tfp.distributions # Initialize a single Deterministic supported at zero. constant = tfd.Deterministic(0.) constant.prob(0.) ==> 1. constant.prob(2.) ==> 0. # Initialize a [2, 2] batch of scalar constants. loc = [[0., 1.], [2., 3.]] x = [[0., 1.1], [1.99, 3.]] constant = tfd.Deterministic(loc) constant.prob(x) ==> [[1., 0.], [0., 1.]]
| Аргументы | |
|---|---|
loc | Числовое Tensor формы [B1, ..., Bb], с b >= 0. Точка (или пакет точек), на которой определено это распределение. |
atol | Неотрицательное Tensor той же dtype что и loc и совместимой формы. Абсолютная погрешность для сравнения близости к loc. По умолчанию 0. |
rtol | Неотрицательное Tensor той же dtype что и loc и совместимой формы. Относительная погрешность для сравнения близости к loc. По умолчанию 0. |
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 - среднее)**2] также не определена. |
atol | Абсолютная погрешность для сравнения точек с self.loc. |
batch_shape | Форма одного образца из одного индекса события как TensorShape. Может быть частично определена или неизвестна. Размеры пакета — это индексы для независимых, нетождественных параметризаций этого распределения. |
dtype | Размер DType Tensor обрабатываемых этим Distribution. |
event_shape | Форма одного образца из одного пакета как TensorShape. Может быть частично определена или неизвестна. |
loc | Точка (или пакет точек), на которой определено это распределение. |
name | Имя, добавляемое ко всем операциям, созданным этим Distribution. |
parameters | Словарь параметров, используемых для создания этого Distribution. |
reparameterization_type | Описывает, как образцы из распределения перепараметризуются. В настоящее время это один из статических экземпляров |
rtol | Относительная погрешность для сравнения точек с self.loc. |
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'
)
Форма одного образца из одного набора в виде 1-D целочисленного значения типа int32 Tensor.
| Аргументы | |
|---|---|
name | имя, которое нужно присвоить операции |
| Возвращаемые значения | |
|---|---|
event_shape | Tensor. |
is_scalar_batch
is_scalar_batch(
name='is_scalar_batch'
)
Указывает, что batch_shape == [].
| Аргументы | |
|---|---|
name | строка Python, добавляемая в начало имён операций, созданных этой функцией. |
| Возвращаемые значения | |
|---|---|
is_scalar_batch | скалярное значение bool типа Tensor. |
is_scalar_event
is_scalar_event(
name='is_scalar_event'
)
Указывает, что event_shape == [].
| Аргументы | |
|---|---|
name | строка Python, добавляемая в начало имён операций, созданных этой функцией. |
| Возвращаемые значения | |
|---|---|
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, добавляемая в начало имён операций, созданных этой функцией. |
| Возвращаемые значения | |
|---|---|
kl_divergence | тензор self.dtype с формой [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, добавляемая в начало имён операций, созданных этой функцией. |
| Возвращаемые значения | |
|---|---|
logcdf | тензор Tensor формы sample_shape(x) + self.batch_shape с значениями типа self.dtype. |
log_prob
log_prob(
value, name='log_prob'
)
Логарифм плотности/массы вероятности.
| Аргументы | |
|---|---|
value | float или double Tensor. |
name | строка Python, добавляемая в начало имён операций, созданных этой функцией. |
| Возвращаемые значения | |
|---|---|
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, добавляемая в начало имён операций, созданных этой функцией. |
| Возвращаемые значения | |
|---|---|
тензор Tensor формы sample_shape(x) + self.batch_shape со значениями типа self.dtype. |
mean
mean(
name='mean'
)
Среднее значение.
mode
mode(
name='mode'
)
Мода.
param_shapes
@classmethod
param_shapes(
sample_shape, name='DistributionParamShapes'
)
Формы параметров при заданной форме вызова sample().
Это метод класса, который описывает, какие аргументы ключ/значение необходимы для создания данного Distribution, чтобы получить определённую форму для вызова sample() этого экземпляра.
Подклассы должны переопределять метод класса _param_shapes.
| Аргументы | |
|---|---|
sample_shape | форма вызова sample(), или список/кортеж Python. |
name | имя для добавления к именам операций. |
| Возвращаемые значения | |
|---|---|
словарь от имени параметра к формам Tensor . |
param_static_shapes
@classmethod
param_static_shapes(
sample_shape
)
param_shapes со статическими (т. е. TensorShape) формами.
Это метод класса, который описывает, какие аргументы ключ/значение необходимы для создания данного Distribution, чтобы получить определённую форму для вызова sample() этого экземпляра. Предполагает, что форма образца известна статически.
Подклассы должны переопределить метод класса _param_shapes для возврата тензоров с постоянными значениями при передаче постоянных значений.
| Аргументы | |
|---|---|
sample_shape | форма вызова sample(), или список/кортеж Python. |
| Возвращаемое значение | |
|---|---|
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 | 0D или 1D 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(). |
© 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/r1.15/api_docs/python/tf/contrib/distributions/Deterministic