tf.contrib.distributions.ConditionalTransformedDistribution
Преобразованное распределение, позволяющее использовать внутреннее условное задание.
Наследуется от: ConditionalDistribution, TransformedDistribution
tf.contrib.distributions.ConditionalTransformedDistribution(
distribution, bijector=None, batch_shape=None, event_shape=None,
validate_args=False, name=None
)
| Аргументы | |
|---|---|
distribution | Экземпляр базового распределения для преобразования. Обычно экземпляр Distribution. |
bijector | Объект, отвечающий за вычисление преобразования. Обычно экземпляр Bijector. None означает Identity(). |
batch_shape | Вектор Tensor, который переопределяет distribution batch_shape; допустимо только если distribution.is_scalar_batch(). |
event_shape | Вектор Tensor, который переопределяет distribution event_shape; допустимо только если distribution.is_scalar_event(). |
validate_args | Python-объект bool, по умолчанию False. При True параметрах распределения проверяются на корректность, несмотря на возможную деградацию производительности во время выполнения. При False недопустимые входные данные могут бесшумно привести к неправильным результатам. |
name | Python-строка str с префиксом для операций, созданных этим классом. По умолчанию: bijector.name + distribution.name. |
| Атрибуты | |
|---|---|
allow_nan_stats | Python-объект bool, описывающий поведение при неопределенном статистическом показателе. Статистики возвращают +/- бесконечность, когда это имеет смысл. Например, дисперсия распределения Коши равна бесконечности. Однако иногда статистика неопределена, например, если плотность распределения не достигает максимума в области определения распределения, мода неопределена. Если среднее значение неопределено, то по определению дисперсия также неопределена. Например, среднее значение распределения Стьюдента для df = 1 неопределено (нет ясного способа сказать, что это либо + или - бесконечность), поэтому дисперсия = E[(X - среднее)**2] также неопределена. |
batch_shape | Форма одного образца из одного индекса события в виде TensorShape. Может быть частично определена или неизвестна. Размерность пакетных данных — индексы независимых, но не идентичных параметризаций этого распределения. |
bijector | Функция, преобразующая x => y. |
distribution | Базовое распределение, p(x). |
dtype | DType Tensors, обрабатываемые этим Distribution. |
event_shape | Форма одного образца из одного пакета в виде TensorShape. Может быть частично определена или неизвестна. |
name | Имя, добавляемое в префикс всех операций, созданных этим Distribution. |
parameters | Словарь параметров, используемых для создания этого Distribution. |
reparameterization_type | Описание того, как образцы из распределения перепараметризуются. В настоящее время это один из статических экземпляров |
validate_args | Python-значение, указывающее на включение, возможно, дорогостоящей проверки. |
Методы
batch_shape_tensor
batch_shape_tensor(
name='batch_shape_tensor'
)
Форма одного образца из одного индекса события в виде одномерного Tensor.
Размерность пакетных данных — индексы независимых, но не идентичных параметризаций этого распределения.
| Аргументы | |
|---|---|
name | имя для операции |
| Возвращает | |
|---|---|
batch_shape | Tensor. |
cdf
cdf(
*args, **kwargs
)
Дополнительная документация из ConditionalTransformedDistribution:
kwargs:
-
bijector_kwargs: Python-словарь имён и значений аргументов, передаваемых биджектору. -
distribution_kwargs: Python-словарь имён и значений аргументов, передаваемых распределению.
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-строка, добавляемая в префикс имён операций, созданных этой функцией. |
| Возвращает | |
|---|---|
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-строка, добавляемая в префикс имён операций, созданных этой функцией. |
| Возвращает | |
|---|---|
cross_entropy | Вещественное значение Tensor с формой [B1, ..., Bn] представляющей собой разные вычисления (энтропии Шеннона) кросс-энтропии. |
entropy
entropy(
name='entropy'
)
Энтропия Шеннона в натах.
event_shape_tensor
event_shape_tensor(
name='event_shape_tensor'
)
Форма одного образца из одного пакета в виде одномерного целого числа 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(
*args, **kwargs
)
Дополнительная документация из ConditionalTransformedDistribution:
kwargs:
-
bijector_kwargs: Python словарь имен/значений аргументов, переданных биектору. -
distribution_kwargs: Python словарь имен/значений аргументов, переданных распределению.
log_prob
log_prob(
*args, **kwargs
)
Дополнительная документация из ConditionalTransformedDistribution:
kwargs:
-
bijector_kwargs: Python словарь имен/значений аргументов, переданных биектору. -
distribution_kwargs: Python словарь имен/значений аргументов, переданных распределению.
log_survival_function
log_survival_function(
*args, **kwargs
)
Дополнительная документация из ConditionalTransformedDistribution:
kwargs:
-
bijector_kwargs: Python словарь имен/значений аргументов, переданных биектору. -
distribution_kwargs: Python словарь имен/значений аргументов, переданных распределению.
mean
mean(
name='mean'
)
Среднее значение.
mode
mode(
name='mode'
)
Мода.
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(
*args, **kwargs
)
Дополнительная документация из ConditionalTransformedDistribution:
kwargs:
-
bijector_kwargs: Python словарь имен/значений аргументов, переданных биектору. -
distribution_kwargs: Python словарь имен/значений аргументов, переданных распределению.
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', **condition_kwargs
)
kwargs:
-
**condition_kwargs: Имена аргументов, переданные реализации подкласса.
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(
*args, **kwargs
)
Дополнительная документация от ConditionalTransformedDistribution:
kwargs:
-
bijector_kwargs: Словарь Python с именами/значениями аргументов, передаваемых биджектору. -
distribution_kwargs: Словарь Python с именами/значениями аргументов, передаваемых распределению.
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/ConditionalTransformedDistribution