Spec-Zone.ru › TensorFlow 1.15

tf.contrib.distributions.RelaxedOneHotCategorical

Распределение RelaxedOneHotCategorical с температурой и логарифмами.

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

tf.contrib.distributions.RelaxedOneHotCategorical(
    temperature, logits=None, probs=None, dtype=None, validate_args=False,
    allow_nan_stats=True, name='RelaxedOneHotCategorical'
)

RelaxedOneHotCategorical — это распределение над случайными векторами вероятностей, векторами положительных вещественных значений, которые суммируются до единицы, и непрерывно приближает распределение OneHotCategorical. Степень приближения контролируется температурой: при стремлении температуры к 0 RelaxedOneHotCategorical становится дискретным с распределением, описываемым параметрами logits или probs; при стремлении температуры к бесконечности RelaxedOneHotCategorical становится постоянным распределением, которое идентично постоянному вектору (1/размер_события, ..., 1/размер_события).

Распределение RelaxedOneHotCategorical было одновременно представлено как распределения Gumbel-Softmax (Jang et al., 2016) и Concrete (Maddison et al., 2016) для использования в качестве непрерывного приближения к распределению Categorical one-hot. Если вы используете это распределение, пожалуйста, укажите обе статьи.

Примеры

Создает непрерывное распределение, которое приближает трехклассовое распределение one-hot categorical. Второй класс наиболее вероятно будет иметь наибольший компонент в выборках, взятых из этого распределения.

temperature = 0.5
p = [0.1, 0.5, 0.4]
dist = RelaxedOneHotCategorical(temperature, probs=p)

Создает непрерывное распределение, которое приближает трехклассовое распределение one-hot categorical. Второй класс наиболее вероятно будет иметь наибольший компонент в выборках, взятых из этого распределения.

temperature = 0.5
logits = [-2, 2, 0]
dist = RelaxedOneHotCategorical(temperature, logits=logits)

Создает непрерывное распределение, которое приближает трехклассовое распределение one-hot categorical. Поскольку температура очень низкая, выборки из этого распределения почти дискретные, с одним компонентом почти равным 1, а остальные — почти 0. Второй класс наиболее вероятно будет иметь наибольший компонент в выборках, взятых из этого распределения.

temperature = 1e-5
logits = [-2, 2, 0]
dist = RelaxedOneHotCategorical(temperature, logits=logits)

Создает непрерывное распределение, которое приближает трехклассовое распределение one-hot categorical. Поскольку температура очень высокая, выборки из этого распределения обычно близки к вектору (1/3, 1/3, 1/3). Второй класс по-прежнему наиболее вероятно будет иметь наибольший компонент в выборках, взятых из этого распределения.

temperature = 10
logits = [-2, 2, 0]
dist = RelaxedOneHotCategorical(temperature, logits=logits)

Eric Jang, Shixiang Gu и Ben Poole. Categorical Reparameterization with Gumbel-Softmax. 2016.

Chris J. Maddison, Andriy Mnih и Yee Whye Teh. The Concrete Distribution: A Continuous Relaxation of Discrete Random Variables. 2016.

Аргументы
temperature 0-мерный Tensor, представляющий температуру набора распределений RelaxedOneHotCategorical. Температура должна быть положительной.
logits N-мерный Tensor, N >= 1, представляющий логарифмы вероятностей набора распределений RelaxedOneHotCategorical. Первые N - 1 измерения индексируют пакет независимых распределений, а последнее измерение представляет вектор логарифмов вероятностей для каждого класса. Должен быть передан только один из logits или probs.
probs N-мерный Tensor, N >= 1, представляющий вероятности набора распределений RelaxedOneHotCategorical. Первые N - 1 измерения индексируют пакет независимых распределений, а последнее измерение представляет вектор вероятностей для каждого класса. Должен быть передан только один из logits или probs.
dtype Тип событийных выборок (по умолчанию: определяется из логарифмов/вероятностей).
validate_args В этом распределении не используется.
allow_nan_stats Python-bool, по умолчанию True. Если False, генерировать исключение, если статистика (например, среднее/мода и т.д.) не определена ни для одного элемента пакета. Если True, элементы пакета с допустимыми параметрами, приводящими к неопределенной статистике, вернут NaN для этой статистики.
name Имя этого распределения (необязательно).
Атрибуты
allow_nan_stats Python-bool, описывающий поведение при неопределенной статистике.

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

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

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

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

bijector Функция преобразования x => y.
distribution Базовое распределение, p(x).
dtype DType Tensor, обрабатываемые этим Distribution.
event_shape Форма одной выборки из одного пакета в виде TensorShape.

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

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

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

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(
    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 Числовое значение self.dtype Tensor с формой [B1, ..., Bn], представляющее n различные вычисления кросс-энтропии (энтропии Шеннона).

Энтропия

Просмотреть исходный код

entropy(
    name='entropy'
)

Энтропия Шеннона в натах.

Вектор формы события

Просмотреть исходный код

event_shape_tensor(
    name='event_shape_tensor'
)

Форма одного элемента из одного набора данных как одномерный целочисленный вектор int32 Tensor.

Аргументы
name Имя для операции
Возвращаемое значение
event_shape Tensor.

Масштабный пакет

Просмотреть исходный код

is_scalar_batch(
    name='is_scalar_batch'
)

Указывает, что batch_shape == [].

Аргументы
name Строка Python, добавляемая к именам операций, созданных этой функцией.
Возвращаемое значение
is_scalar_batch Масштабное скалярное значение bool Tensor.

Масштабное событие

Просмотреть исходный код

is_scalar_event(
    name='is_scalar_event'
)

Указывает, что event_shape == [].

Аргументы
name Строка Python, добавляемая к именам операций, созданных этой функцией.
Возвращаемое значение
is_scalar_event Масштабное скалярное значение bool Tensor.

Дивергенция Кульбака—Лайблера

Просмотреть исходный код

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, добавляемая к именам операций, созданных этой функцией.
Возвращаемое значение
kl_divergence Значение self.dtype Tensor с формой [B1, ..., Bn], представляющее n различные вычисления дивергенции Кульбака—Лайблера.

Логарифм функции распределения

Просмотреть исходный код

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(
    value, name='log_prob'
)

Логарифм плотности/массы вероятности.

Аргументы
value float или double Tensor.
name Строка Python, добавляемая к именам операций, созданных этой функцией.
Возвращаемое значение
log_prob Матрица Tensor с формой sample_shape(x) + self.batch_shape и значениями типа self.dtype.

Логарифм функции выживания

Просмотреть исходный код

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(
    name='mean'
)

Среднее значение.

Мода

Просмотреть исходный код

mode(
    name='mode'
)

Мода.

Формы параметров

Просмотреть исходный код

@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:

quantile(p) := x such that P[X <= x] == p
Аргументы
value float или double Tensor.
name Строка Python, добавляемая к именам операций, созданных этой функцией.
Возвращаемое значение
quantile тензор формы 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 для посева генератора псевдослучайных чисел.
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().

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

Spec-Zone.ru

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