tf.contrib.distributions.ConditionalDistribution
Распределение, поддерживающее внутренние параметры (локальные скрытые переменные).
Наследуется от: Distribution
tf.contrib.distributions.ConditionalDistribution(
dtype, reparameterization_type, validate_args, allow_nan_stats, parameters=None,
graph_parents=None, name=None
)
Подклассы этого распределения могут иметь дополнительные ключевые аргументы, передаваемые в методы, основанные на выборке (т. е. sample, log_prob, и т. д.).
| Аргументы | |
|---|---|
dtype | Тип выборок событий. None подразумевает отсутствие проверки типа. |
reparameterization_type | Экземпляр ReparameterizationType. Если distributions.FULLY_REPARAMETERIZED, это Distribution может быть перепараметризовано в терминах некоторого стандартного распределения с функцией, якобиан которой является постоянным для области определения стандартного распределения. Если distributions.NOT_REPARAMETERIZED, то такая перепараметризация недоступна. |
validate_args | Python bool, по умолчанию False. Когда True параметры распределения проверяются на корректность, несмотря на возможную деградацию производительности во время выполнения. Когда False некорректные входные данные могут в молчаливом режиме привести к неверным результатам. |
allow_nan_stats | Python bool, по умолчанию True. При True, статистические данные (например, среднее значение, мода, дисперсия) используют значение "NaN", чтобы указать, что результат не определён. При False, возникает исключение, если один или несколько элементов статистики в пакете не определены. |
parameters | Python dict параметров, используемых для создания этого Distribution. |
graph_parents | Python list условий графика, необходимых для этого Distribution. |
name | Python str имя, добавляемое как префикс к операциям, созданным этим классом. По умолчанию: имя подкласса. |
| Исключения | |
|---|---|
ValueError | если какой-либо член graph_parents является None или не является Tensor. |
| Атрибуты | |
|---|---|
allow_nan_stats | Python bool, описывающий поведение при неопределённом статистическом показателе. Статистики возвращают +/- бесконечность, когда это имеет смысл. Например, дисперсия распределения Коши равна бесконечности. Однако иногда статистический показатель не определён, например, если плотность распределения не достигает максимума в пределах области определения распределения, мода не определена. Если среднее значение не определено, то по определению дисперсия также не определена. Например, среднее значение для распределения Стьюдента для df = 1 не определено (нет явного способа сказать, что оно равно + или - бесконечности), поэтому дисперсия = E[(X - среднее значение)**2] также не определена. |
batch_shape | Форма единственной выборки из одного индекса события в виде TensorShape. Может быть частично определена или неизвестна. Размерности пакета представляют собой индексы в независимых, нетождественных параметризациях этого распределения. |
dtype | DType Tensors, обрабатываемых этим Distribution. |
event_shape | Форма одной выборки из одного набора в виде TensorShape. Может быть частично определена или неизвестна. |
name | Имя, добавляемое в качестве префикса ко всем операциям, созданным этим Distribution. |
parameters | Словарь параметров, используемых для создания этого Distribution. |
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', **condition_kwargs
)
kwargs:
-
**condition_kwargs: Имена аргументов, переданные для реализации подкласса.
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'
)
Форма единственной выборки из одного набора в виде одномерного целочисленного 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', **condition_kwargs
)
kwargs:
-
**condition_kwargs: Переданные аргументы в виде ключевых слов в подкласс.
log_prob
log_prob(
value, name='log_prob', **condition_kwargs
)
kwargs:
-
**condition_kwargs: Переданные аргументы в виде ключевых слов в подкласс.
log_survival_function
log_survival_function(
value, name='log_survival_function', **condition_kwargs
)
kwargs:
-
**condition_kwargs: Переданные аргументы в виде ключевых слов в подкласс.
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). |
| Возвращает | |
|---|---|
словарь соответствия между именем параметра и TensorShape. |
| Возможные исключения | |
|---|---|
ValueError | если sample_shape является TensorShape и не определён полностью. |
prob
prob(
value, name='prob', **condition_kwargs
)
kwargs:
-
**condition_kwargs: Переданные аргументы в виде ключевых слов в подкласс.
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', **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(
value, name='survival_function', **condition_kwargs
)
kwargs:
-
**condition_kwargs: Имена аргументов, переданные в реализацию подкласса.
variance
variance(
name='variance'
)
Дисперсия.
Дисперсия определяется как,
Var = E[(X - E[X])**2]
где X — случайная величина, связанная с этим распределением, Var.shape = batch_shape + event_shape обозначает математическое ожидание, и E.
| Аргументы | |
|---|---|
name | Строка Python, добавляемая в качестве префикса к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
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/ConditionalDistribution