Spec-Zone.ru › TensorFlow 1.15

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 Описывает, как образцы из распределения перепараметризуются.

В настоящее время это один из статических экземпляров distributions.FULLY_REPARAMETERIZED или distributions.NOT_REPARAMETERIZED.

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.
END_OF_DOCUMENT_MARKER
Возвращаемое значение
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API