Этот неинъективный биджектор позволяет преобразовывать скалярные распределения с помощью функции абсолютного значения, которая отображает (-inf, inf) в [0, inf).
Для y in (0, inf), AbsoluteValue.inverse(y) возвращает обратное отображение {x in (-inf, inf) : |x| = y} в виде кортежа, -y, y.
AbsoluteValue.inverse(0) возвращает 0, 0, что не является обратным отображением (обратное отображение — это синглетон {0}), но «работает» вместе с TransformedDistribution для получения слева полунепрерывной плотности.
Для y < 0, AbsoluteValue.inverse(y) счастливо возвращает неправильное значение, -y, y. Это делается для повышения эффективности. Если validate_args == True, y < 0 вызовет исключение.
tfd = tf.contrib.distributions
abs = tfd.bijectors.AbsoluteValue()
abs.forward([-1., 0., 1.])
==> [1., 0., 1.]
abs.inverse(1.)
==> [-1., 1.]
# The |dX/dY| is constant, == 1. So Log|dX/dY| == 0.
abs.inverse_log_det_jacobian(1.)
==> [0., 0.]
# Special case handling of 0.
abs.inverse(0.)
==> [0., 0.]
abs.inverse_log_det_jacobian(0.)
==> [0., 0.]
Аргументы
validate_args
Python-значение, указывающее, следует ли проверять аргументы на корректность, в частности, являются ли входные данные для inverse и inverse_log_det_jacobian неотрицательными.
name
Python-имя, присваиваемое операциям, управляемым этим объектом.
Атрибуты
dtype
тип данных Tensor преобразуемых этим распределением.
forward_min_event_ndims
Возвращает минимальное число измерений, на которых биджектор.forward работает.
graph_parents
Возвращает список родительских узлов этого Bijector в виде Python-списка.
inverse_min_event_ndims
Возвращает минимальное число измерений, на которых биджектор.inverse работает.
is_constant_jacobian
Возвращает true, если матрица Якобиан не зависит от x.
Примечание: Матрица Якобиан либо постоянна для прямого и обратного отображения, либо для ни одного из них.
name
Возвращает строковое имя этого Bijector.
validate_args
Возвращает True, если тензорные аргументы будут проверены.
Tensor. Вход для вычисления определителя обратной матрицы Якоби.
event_ndims
Количество измерений в вероятностных событиях, преобразуемых. Должно быть больше или равно self.forward_min_event_ndims. Результат суммируется по последним измерениям, чтобы получить скалярный определитель Якоби для каждого события, т.е. он имеет форму x.shape.ndims - event_ndims измерений.
name
Имя для этой операции.
Возвращаемое значение
Tensor, если этот биектор является инъективным. Если не инъективный, то это не реализовано.
Исключения
TypeError
если self.dtype указан, а y.dtype не self.dtype.
NotImplementedError
если ни _forward_log_det_jacobian ни {_inverse, _inverse_log_det_jacobian} не реализованы, или это не инъективный биектор.
Возвращает обратное вычисление Bijector, т.е., X = g^{-1}(Y).
Аргументы
y
Tensor. Вход для вычисления обратной функции.
name
Имя для этой операции.
Возвращаемое значение
Tensor, если этот биектор является инъективным. Если не инъективный, возвращает k-кортеж, содержащий уникальные k точки (x1, ..., xk) такие, что g(xi) = y.
Обратите внимание, что forward_log_det_jacobian является отрицанием этой функции, вычисленной в точке g^{-1}(y).
Аргументы
y
Tensor. Вход для вычисления определителя обратного Якобиана.
event_ndims
Число измерений в преобразуемых вероятностных событиях. Должно быть больше или равно self.inverse_min_event_ndims. Результат суммируется по последним измерениям, чтобы получить скалярный определитель Якобиана для каждого события, т.е. он имеет форму y.shape.ndims - event_ndims измерений.
name
Имя для данного оператора.
Возвращаемое значение
Tensor, если этот биектор является инъективным. Если не инъективен, возвращает кортеж локальных логарифмов определителей Якобиана, log(det(Dg_i^{-1}(y))), где g_i является ограничением g на ith разбиение Di.
Исключения
TypeError
если self.dtype задано, и y.dtype не является self.dtype.