Spec-Zone.ru › TensorFlow 1.15

tf.contrib.distributions.bijectors.CholeskyOuterProduct

Вычислить g(X) = X @ X.T; X — нижнетреугольная матрица с положительной диагональю.

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

tf.contrib.distributions.bijectors.CholeskyOuterProduct(
    validate_args=False, name='cholesky_outer_product'
)
Примечание: верхнетреугольная часть 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.

Примеры

bijector.CholeskyOuterProduct().forward(x=[[1., 0], [2, 1]])
# Result: [[1., 2], [2, 5]], i.e., x @ x.T

bijector.CholeskyOuterProduct().inverse(y=[[1., 2], [2, 5]])
# Result: [[1., 0], [2, 1]], i.e., cholesky(y).
Аргументы
validate_args Python bool указывающий, нужно ли проверять аргументы на корректность.
name Python str имя, присвоенное операциям, управляемым этим объектом.
Атрибуты
dtype тип данных Tensor преобразуемых с помощью этого распределения.
forward_min_event_ndims Возвращает минимальное количество измерений, на которых работает bijector.forward.
graph_parents Возвращает graph_parents этого Bijector в виде списка Python.
inverse_min_event_ndims Возвращает минимальное количество измерений, на которых работает bijector.inverse.
is_constant_jacobian Возвращает true, если матрица Якоби не является функцией от x.
Примечание: Матрица Якоби либо постоянна для forward и inverse, либо ни для чего.
name Возвращает строковое имя этого Bijector.
validate_args Возвращает True, если аргументы Tensor будут проверены.

Методы

forward

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

forward(
    x, name='forward'
)

Возвращает вычисление Bijector forward, т.е. X = g(Y).

Аргументы
x Tensor. Вход для вычисления "forward".
name Имя, которое следует присвоить этому op.
Возвращает
Tensor.
Исключения
TypeError если self.dtype указано, а x.dtype не self.dtype.
NotImplementedError если _forward не реализовано.

forward_event_shape

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

forward_event_shape(
    input_shape
)

Форма единичного образца из единичной партии как TensorShape.

То же значение, что и forward_event_shape_tensor. Может быть определена только частично.

Аргументы
input_shape TensorShape указывающая форму event-части, переданную в функцию forward .
Возвращает
forward_event_shape_tensor TensorShape указывающая форму event-части после применения forward. Возможно неизвестно.

forward_event_shape_tensor

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

forward_event_shape_tensor(
    input_shape, name='forward_event_shape_tensor'
)

Форма одного образца из одной партии в виде int32 1D Tensor.

Аргументы
input_shape Tensor, int32 вектор, указывающий форму части события, переданную в функцию forward.
name имя, присваиваемое операции
Возвращаемое значение
forward_event_shape_tensor Tensor, int32 вектор, указывающий форму части события после применения forward.

forward_log_det_jacobian

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

forward_log_det_jacobian(
    x, event_ndims, name='forward_log_det_jacobian'
)

Возвращает forward_log_det_jacobian.

Аргументы
x 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} не реализованы, или это неинъективный биектор.

inverse

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

inverse(
    y, name='inverse'
)

Возвращает обратное Bijector вычисление, т.е. X = g^{-1}(Y).

Аргументы
y Tensor. Вход для вычисления "обратного" отображения.
name Имя, присваиваемое этой операции.
Возвращаемое значение
Tensor, если этот биектор является инъективным. Если не инъективный, возвращает k-кортеж, содержащий уникальные k точки (x1, ..., xk), такие что g(xi) = y.
Исключения
TypeError если self.dtype задано, а y.dtype не self.dtype.
NotImplementedError если _inverse не реализовано.

inverse_event_shape

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

inverse_event_shape(
    output_shape
)

Форма одного образца из одной партии в виде TensorShape.

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

Аргументы
output_shape TensorShape, указывающий форму части события, переданную в функцию inverse.
Возвращаемое значение
inverse_event_shape_tensor TensorShape, указывающий форму части события после применения inverse. Возможно, неизвестно.

inverse_event_shape_tensor

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

inverse_event_shape_tensor(
    output_shape, name='inverse_event_shape_tensor'
)

Форма одного образца из одной партии в виде int32 1D Tensor.

Аргументы
output_shape Tensor, int32 вектор, указывающий форму части события, переданный в функцию inverse.
name имя для операции
Возвращаемое значение
inverse_event_shape_tensor Tensor, int32 вектор, указывающий форму части события после применения inverse.

inverse_log_det_jacobian

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

inverse_log_det_jacobian(
    y, event_ndims, name='inverse_log_det_jacobian'
)

Возвращает (лог o det o якобиан o обратный)(y).

Математически возвращает: 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.
NotImplementedError если _inverse_log_det_jacobian не реализовано.

© 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/bijectors/CholeskyOuterProduct

Spec-Zone.ru

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