Элементы треугольной матрицы заполняются по часовой стрелке по спирали.
Для входных данных с формой batch_shape + [d], создаётся выход с формой batch_shape + [n, n], где n = (-1 + sqrt(1 + 8 * d))/2. Это следует из решения квадратного уравнения d = 1 + 2 + ... + n = n * (n + 1)/2.
Tensor. Вход для вычисления определителя якобиана "прямого" отображения.
event_ndims
Число измерений в вероятностных событиях, которые преобразуются. Должно быть больше или равно self.forward_min_event_ndims. Результат суммируется по последним измерениям, чтобы получить скалярный определитель якобиана для каждого события, т. е. он имеет форму x.shape.ndims - event_ndims измерений.
name
Имя, которое нужно дать этому op.
Возвращаемое значение
Tensor, если этот биджектор инъективен. Если не инъективен, это не реализовано.
Исключения
TypeError
если self.dtype указано и y.dtype не self.dtype.
NotImplementedError
если ни _forward_log_det_jacobian ни {_inverse, _inverse_log_det_jacobian} не реализованы, или это биджектор, не являющийся инъективным.
В математическом смысле возвращает: log(det(dX/dY))(Y). (Напомним, что: X=g^{-1}(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.