Spec-Zone.ru › TensorFlow 1.15

tf.contrib.distributions.bijectors.AffineLinearOperator

Вычислять Y = g(X; shift, scale) = scale @ X + shift.

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

tf.contrib.distributions.bijectors.AffineLinearOperator(
    shift=None, scale=None, validate_args=False, name='affine_linear_operator'
)

shift является числовым Tensor и scale является LinearOperator.

Если X является скалярным, то прямое преобразование: scale * X + shift где * обозначает скалярное произведение.

Примечание: мы не всегда просто транспонируем X (но пишем это так для краткости). На самом деле вход X подвергается следующему преобразованию перед умножением слева на scale:
  1. Если нет размерностей выборки, мы вызываем X = tf.expand_dims(X, 0), т.е., new_sample_shape = [1]. В противном случае ничего не делаем.
  2. Форма выборки сглаживается до одной размерности, т.е., new_sample_shape = [n] где n = tf.reduce_prod(old_sample_shape).
  3. Размерность выборки циклически сдвигается влево на 1, т.е., new_shape = [B1,...,Bb, k, n] где n как выше, k — форма события, а B1,...,Bb — формы пакета для каждой из b размерностей пакета.

(Для более подробной информации см. shape.make_batch_of_event_sample_matrices.)

Результат вышеупомянутого преобразования состоит в том, что X можно рассматривать как пакет матриц, где каждый столбец — выборка из распределения. После умножения слева на scale, мы применяем обратное преобразование. Вход Y также подвергается тому же преобразованию до/после умножения слева на inv(scale).

Пример использования:

linalg = tf.linalg

x = [1., 2, 3]

shift = [-1., 0., 1]
diag = [1., 2, 3]
scale = linalg.LinearOperatorDiag(diag)
affine = AffineLinearOperator(shift, scale)
# In this case, `forward` is equivalent to:
# y = scale @ x + shift
y = affine.forward(x)  # [0., 4, 10]

shift = [2., 3, 1]
tril = [[1., 0, 0],
        [2, 1, 0],
        [3, 2, 1]]
scale = linalg.LinearOperatorLowerTriangular(tril)
affine = AffineLinearOperator(shift, scale)
# In this case, `forward` is equivalent to:
# np.squeeze(np.matmul(tril, np.expand_dims(x, -1)), -1) + shift
y = affine.forward(x)  # [3., 7, 11]
Аргументы
shift Число с плавающей точкой Tensor.
scale Подкласс LinearOperator. Представляет (пакетную) положительно определённую матрицу M в R^{k x k}.
validate_args Python bool, указывающее, должны ли проверяться аргументы на корректность.
name Python str имя, присвоенное операциям, управляемым этим объектом.
Исключения
TypeError если scale не является LinearOperator.
TypeError если shift.dtype не соответствует scale.dtype.
ValueError если не scale.is_non_singular.
Атрибуты
dtype тип данных Tensor преобразуемых этим распределением.
forward_min_event_ndims Возвращает минимальное количество измерений, на которых работает bijector.forward.
graph_parents Возвращает список graph_parents этого Bijector.
inverse_min_event_ndims Возвращает минимальное количество измерений, на которых работает bijector.inverse.
is_constant_jacobian Возвращает истину, если матрица Якоби не является функцией от x.
Примечание: Матрица Якоби либо постоянна для прямого и обратного преобразования, либо для обоих.
name Возвращает строку имени этого Bijector.
scale scale LinearOperator в Y = scale @ X + shift.
shift shift Tensor в Y = scale @ X + shift.
validate_args Возвращает True, если аргументы тензоров будут проверены.

Методы

forward

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

forward(
    x, name='forward'
)

Возвращает результат вычисления прямого преобразования, т.е., X = g(Y).

Аргументы
x Tensor. Вход для вычисления "прямого" преобразования.
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, указывающая форму события, переданную в функцию forward .
Возвращает
forward_event_shape_tensor TensorShape указывающая форму события после применения forward. Возможно неизвестно.

forward_event_shape_tensor

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

forward_event_shape_tensor(
    input_shape, name='forward_event_shape_tensor'
)

Форма одной выборки из одного пакета как int32 одномерный Tensor.

Аргументы
input_shape Tensor, int32 вектор, указывающий форму события, переданную в функцию forward .
name имя, присваиваемое op.
Возвращает
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 Имя для этого op.
Возвращает
Tensor, если этот bijector инъективный. Если не инъективный, это не реализовано.
Исключения
TypeError если указано self.dtype и y.dtype не self.dtype .
NotImplementedError если ни _forward_log_det_jacobian ни {_inverse, _inverse_log_det_jacobian} не реализованы, или это не инъективный bijector.

inverse

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

inverse(
    y, name='inverse'
)

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

Аргументы
y Tensor. Вход для вычисления "обратного" преобразования.
name Имя для этого op.
Возвращает
Tensor, если этот bijector инъективный. Если не инъективный, возвращает 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'
)

Возвращает (log o det o Jacobian o inverse)(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/AffineLinearOperator

Spec-Zone.ru

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