Примечание: верхнетреугольная часть X игнорируется (неважно, равна ли она нулю).
Суръективность g как отображения из множества n × n нижнетреугольных матриц с положительной диагональю в множество SPD-матриц следует непосредственно из выполнения алгоритма факторизации Холеского для SPD-матрицы A, чтобы получить нижнетреугольную матрицу L с положительной диагональю, такую что A = L @ L.T.
Для доказательства инъективности g предположим, что L1 и L2 — нижнетреугольные матрицы с положительными диагоналями и удовлетворяют A = L_1 @ L_1.T = L_2 @ L_2.T. Тогда inv(L_1) @ A @ inv(L_1).T = [inv(L_1) @ L_2] @ [inv(L_1) @ L_2].T = I. Установив L_3 := inv(L_1) @ L_2, следует, что L3 — это нижнетреугольная матрица с положительной диагональю, что вытекает из inv(L_1) являющейся нижнетреугольной матрицей с положительной диагональю (что вытекает из того, что диагональ треугольной матрицы является её собственным спектром), и что произведение двух нижнетреугольных матриц с положительными диагоналями является другой нижнетреугольной матрицей с положительной диагональю.
Простой индуктивный аргумент (проходя по одному столбцу L3 за раз) показывает, что, если I = L_3 @ L_3.T, причём L3 — нижнетреугольная матрица с положительной диагональю, то L_3 = I. Таким образом, L_1 = L_2, что доказывает инъективность g.
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.