Spec-Zone.ru › TensorFlow

tf.compat.v1.distributions.Normal

Нормальное распределение с параметрами положения loc и scale.

Наследуется от: Distribution

tf.compat.v1.distributions.Normal(
    loc,
    scale,
    validate_args=False,
    allow_nan_stats=True,
    name='Normal'
)

Математические подробности

Функция плотности вероятности (pdf) имеет вид:

pdf(x; mu, sigma) = exp(-0.5 (x - mu)**2 / sigma**2) / Z
Z = (2 pi sigma**2)**0.5

где loc = mu — среднее значение, scale = sigma — стандартное отклонение, а Z — нормировочная константа.

Нормальное распределение относится к семейству распределений положения-масштаба, то есть его можно построить следующим образом:

X ~ Normal(loc=0, scale=1)
Y = loc + scale * X

Примеры

Примеры инициализации одного или нескольких распределений.

import tensorflow_probability as tfp
tfd = tfp.distributions

# Define a single scalar Normal distribution.
dist = tfd.Normal(loc=0., scale=3.)

# Evaluate the cdf at 1, returning a scalar.
dist.cdf(1.)

# Define a batch of two scalar valued Normals.
# The first has mean 1 and standard deviation 11, the second 2 and 22.
dist = tfd.Normal(loc=[1, 2.], scale=[11, 22.])

# Evaluate the pdf of the first distribution on 0, and the second on 1.5,
# returning a length two tensor.
dist.prob([0, 1.5])

# Get 3 samples, returning a 3 x 2 tensor.
dist.sample([3])

Аргументы транслируются при возможности.

# Define a batch of two scalar valued Normals.
# Both have mean 1, but different standard deviations.
dist = tfd.Normal(loc=1., scale=[11, 22.])

# Evaluate the pdf of both distributions on the same point, 3.0,
# returning a length 2 tensor.
dist.prob(3.0)
Аргументы
loc Тензор с числами с плавающей запятой; средние значения распределения (распределений).
scale Тензор с числами с плавающей запятой; стандартные отклонения распределения (распределений). Должен содержать только положительные значения.
validate_args Объект Python bool, по умолчанию False. Если True, параметры распределения проверяются на корректность, что может снизить производительность во время выполнения. Если False, некорректные входные данные могут незаметно привести к неверным результатам.
allow_nan_stats Объект Python bool, по умолчанию True. Если True, статистики (например, среднее значение, мода, дисперсия) используют значение «NaN», чтобы указать, что результат не определён. Если False, возникает исключение, когда одна или несколько статистических характеристик элементов пакета не определены.
name Имя Python str, добавляемое в начало имён Ops, создаваемых этим классом.
Возбуждает исключения
TypeError если loc и scale имеют разные dtype.
Атрибуты
allow_nan_stats Объект Python bool, описывающий поведение в случае неопределённой статистической характеристики.

Статистические характеристики возвращают +/- бесконечность, когда это имеет смысл. Например, дисперсия распределения Коши равна бесконечности. Однако иногда статистическая характеристика не определена. Например, если плотность вероятности распределения не достигает максимума в пределах его носителя, мода не определена. Если среднее значение не определено, то по определению не определена и дисперсия. Например, среднее значение распределения Стьюдента с df = 1 не определено (нет однозначного способа сказать, равно ли оно + или - бесконечности), поэтому дисперсия = E[(X - mean)**2] также не определена.

batch_shape Форма одного образца из одного индекса события в виде TensorShape.

Может быть определена частично или неизвестна.

Размерности пакета являются индексами независимых, неодинаковых параметризаций этого распределения.

dtype DType объектов Tensor, обрабатываемых этим Distribution.
event_shape Форма одного образца из одного пакета в виде TensorShape.

Может быть определена частично или неизвестна.

loc Параметр распределения, задающий среднее значение.
name Имя, добавляемое в начало имён всех операций, созданных этим Distribution.
parameters Словарь параметров, используемых для создания этого экземпляра Distribution.
reparameterization_type Описывает способ перепараметризации образцов распределения.

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

scale Параметр распределения, задающий стандартное отклонение.
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'
)

Форма одного образца из одного пакета в виде одномерного 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], представляющий 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 str, добавляемое в начало имён операций, созданных этой функцией.
Возвращает
logcdf Tensor формы 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 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 str, добавляемое в начало имён операций, созданных этой функцией.
Возвращает
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 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 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 int32 Tensor размерности 0 или 1. Форма создаваемых образцов.
seed Целочисленное начальное значение для генератора случайных чисел (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().

© 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/Normal

Spec-Zone.ru

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