tf.compat.v1.distributions.Uniform
Равномерное распределение с параметрами low и high.
Наследуется от: Distribution
tf.compat.v1.distributions.Uniform(
low=0.0,
high=1.0,
validate_args=False,
allow_nan_stats=True,
name='Uniform'
)
Математические подробности
Функция плотности вероятности (pdf) равна,
pdf(x; a, b) = I[a <= x < b] / Z Z = b - a
где
-
low = a, -
high = b, -
Z— нормирующая константа, и -
I[predicate]— функция индикатора дляpredicate.
Параметры low и high должны быть сформированы таким образом, чтобы поддерживать широковещание (например, high - low — это допустимая операция).
Примеры
# Without broadcasting:
u1 = Uniform(low=3.0, high=4.0) # a single uniform distribution [3, 4]
u2 = Uniform(low=[1.0, 2.0],
high=[3.0, 4.0]) # 2 distributions [1, 3], [2, 4]
u3 = Uniform(low=[[1.0, 2.0],
[3.0, 4.0]],
high=[[1.5, 2.5],
[3.5, 4.5]]) # 4 distributions
# With broadcasting: u1 = Uniform(low=3.0, high=[5.0, 6.0, 7.0]) # 3 distributions
| Аргументы | |
|---|---|
low | Плавающее числовое тензор, нижняя граница интервала вывода. Должен иметь low < high. |
high | Плавающее числовой тензор, верхняя граница интервала вывода. Должен иметь low < high. |
validate_args | Строковое значение Python, по умолчанию False. Когда True параметры распределения проверяются на валидность, несмотря на возможное ухудшение производительности во время выполнения. Когда False недопустимые входные данные могут молча привести к неправильным результатам. |
allow_nan_stats | Строковое значение Python, по умолчанию True. Когда True, статистические данные (например, среднее значение, мода, дисперсия) используют значение "NaN" для обозначения того, что результат не определен. Когда False, возникает исключение, если один или несколько элементов пакетных статистических данных не определены. |
name | Строковое значение Python, имя, добавленное к операциям, созданным этим классом. |
| Исключения | |
|---|---|
InvalidArgumentError | если low >= high и validate_args=False. |
| Атрибуты | |
|---|---|
allow_nan_stats | Строковое значение Python, описывающее поведение, когда статистический показатель не определен. Статистические данные возвращают +/- бесконечность, когда это имеет смысл. Например, дисперсия распределения Коши равна бесконечности. Однако иногда статистический показатель не определен, например, если функция плотности распределения не достигает максимума в рамках области определения распределения, мода не определена. Если среднее значение не определено, то по определению дисперсия также не определена. Например, среднее значение для распределения Стьюдента при df = 1 не определено (нет четкого способа сказать, что оно равно + или - бесконечности), поэтому дисперсия = E[(X - среднее)**2] также не определена. |
batch_shape | Размер отдельной выборки из отдельного индекса события как TensorShape. Может быть частично определен или неизвестен. Измерения пакета — это индексы в независимых, не идентичных параметризациях этого распределения. |
dtype | DType Tensor, обрабатываемых этим Distribution. |
event_shape | Размер отдельной выборки из отдельного пакета как TensorShape. Может быть частично определен или неизвестен. |
high | Верхняя граница интервала вывода. |
low | Нижняя граница интервала вывода. |
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(
value, name='cdf'
)
Функция кумулятивного распределения.
Для случайной величины X, функцией кумулятивного распределения cdf является:
cdf(x) := P[X <= x]
| Аргументы | |
|---|---|
value | float или double Tensor. |
name | Строковое значение Python, добавляемое к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
cdf | тензор с размерами 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], представляющей различные вычисления (шанноновской) перекрестной энтропии. |
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 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 определяется как:
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], представляющей различные вычисления расхождения Кульбака—Лейблера. |
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 str добавленное к именам операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
logcdf | тензор формы sample_shape(x) + self.batch_shape со значениями типа self.dtype. |
log_prob
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
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
mean(
name='mean'
)
Среднее значение.
mode
END_OF_DOCUMENT_MARKER mode(
name='mode'
)
Режим.
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 | тензор формы sample_shape(x) + self.batch_shape со значениями типа self.dtype. |
quantile
quantile(
value, name='quantile'
)
Функция квантиля. Также известна как «обратная функция распределения» или «функция процентиля».
Для случайной величины X и значения p in [0, 1] квантиль:
quantile(p) := x such that P[X <= x] == p
| Аргументы | |
|---|---|
value | float или double Tensor. |
name | Строка Python, добавляемая в начало имён операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
quantile | тензор формы sample_shape(x) + self.batch_shape со значениями типа self.dtype. |
range
range(
name='range'
)
high - low.
sample
sample(
sample_shape=(), seed=None, name='sample'
)
Генерирует выборки указанной формы.
Обратите внимание, что вызов sample() без аргументов сгенерирует одну выборку.
| Аргументы | |
|---|---|
sample_shape | 0-мерный или 1-мерный целочисленный тензор. Форма генерируемых выборок. |
seed | Целочисленный seed для генератора случайных чисел. |
name | Имя для операции. |
| Возвращаемое значение | |
|---|---|
samples | тензор с добавленными передними измерениями 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 | Число с плавающей точкой формы, идентичной форме 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, добавляемая в начало имён операций, созданных этой функцией. |
| Возвращаемое значение | |
|---|---|
тензор формы 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 | Число с плавающей точкой формы, идентичной форме 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/Uniform