Spec-Zone.ru › TensorFlow 1.15

tf.contrib.distributions.BatchReshape

Распределение с преобразованием пакетных размеров.

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

tf.contrib.distributions.BatchReshape(
    distribution, batch_shape, validate_args=False, allow_nan_stats=True, name=None
)

Это «мета-распределение» преобразует размер пакетных измерений другого распределения.

Примеры

import tensorflow_probability as tfp
tfd = tfp.distributions

dtype = np.float32
dims = 2
new_batch_shape = [1, 2, -1]
old_batch_shape = [6]

scale = np.ones(old_batch_shape + [dims], dtype)
mvn = tfd.MultivariateNormalDiag(scale_diag=scale)
reshape_mvn = tfd.BatchReshape(
    distribution=mvn,
    batch_shape=new_batch_shape,
    validate_args=True)

reshape_mvn.batch_shape
# ==> [1, 2, 3]

x = reshape_mvn.sample(sample_shape=[4, 5])
x.shape
# ==> [4, 5, 1, 2, 3, 2] == sample_shape + new_batch_shape + [dims]

reshape_mvn.log_prob(x).shape
# ==> [4, 5, 1, 2, 3] == sample_shape + new_batch_shape
Аргументы
distribution Экземпляр базового распределения для преобразования. Обычно экземпляр Distribution.
batch_shape Положительный вектор-подобный int-подобный Tensor , представляющий новую форму пакетных измерений. До одного измерения может содержать -1, что означает остаток размера пакета.
validate_args Python bool, по умолчанию False. Когда параметры распределения True проверяются на допустимость, несмотря на возможную ухудшение производительности во время выполнения. Когда False недопустимые входные данные могут молча привести к неверным результатам.
allow_nan_stats Python bool, по умолчанию True. Когда True, статистики (например, среднее значение, мода, дисперсия) используют значение «NaN», чтобы указать, что результат не определён. Когда False, возникает исключение, если один или несколько элементов статистики пакета не определены.
name Имя для операций, созданных инициализатором. Значение по умолчанию: "BatchReshape" + distribution.name.
Возбуждает исключение
ValueError если batch_shape не является вектором.
ValueError если batch_shape имеет не положительные элементы.
ValueError если размер batch_shape не совпадает с размером distribution.batch_shape.
Атрибуты
allow_nan_stats Python bool описывающий поведение, когда статистика не определена.

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

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

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

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

distribution
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

Просмотр исходного кода

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-мерного целочисленного значения 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'
)

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

Для случайной величины 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

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

mode(
    name='mode'
)

Мода.

param_shapes

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

@classmethod
param_shapes(
    sample_shape, name='DistributionParamShapes'
)

Формы параметров при заданной форме вызова sample().

Это метод класса, описывающий, какие пары «ключ-значение» требуются для создания данного Distribution, чтобы получить определённую форму при вызове sample().

Подклассы должны переопределять метод класса _param_shapes.

Аргументы
sample_shape Tensor или список/кортеж Python. Желаемая форма вызова sample().
name имя для добавления к операторам.
Возвращаемые значения
словарь от имени параметра к формам Tensor.

param_static_shapes

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

@classmethod
param_static_shapes(
    sample_shape
)

param_shapes со статическими (т.е. TensorShape) формами.

Это метод класса, описывающий, какие пары «ключ-значение» требуются для создания данного Distribution, чтобы получить определённую форму при вызове sample(). Предполагается, что форма образца известна статически.

Подклассы должны переопределить метод класса _param_shapes для возврата тензоров с постоянными значениями при передаче постоянных значений.

Аргументы
sample_shape TensorShape или список/кортеж Python. Желаемая форма вызова sample().
Возвращаемые значения
словарь от имени параметра к 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 0-мерный или 1-мерный int32 Tensor. Форма генерируемых выборок.
seed Целое число Python для инициализации генератора случайных чисел.
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/BatchReshape

Spec-Zone.ru

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