torch_openreml.covariance.transform.TransformPow

class torch_openreml.covariance.transform.TransformPow(factor=2.0)[source]

Bases: Transform

Power transform with configurable exponent.

\[f(x) = x^p\]

Initialize the power transform.

Parameters:

factor (float) – Exponent \(p\). Defaults to 2.0.

Methods

__call__(x)

Apply the power transform.

grad(x)

Compute derivative of \(x^p\) for chain rule propagation.

inverse(x)

Apply the inverse transform (square root).

Attributes

codomain

Codomain of the transform.

domain

Domain of the transform.

domain = 'ℝ'

Domain of the transform.

codomain = 'ℝ'

Codomain of the transform.

__call__(x)[source]

Apply the power transform.

Parameters:

x (torch.Tensor) – Input tensor in \(\mathbb{R}\).

Returns:

Element-wise \(x^p\).

Return type:

torch.Tensor

Example:

import torch
from torch_openreml.covariance.transform import TransformPow

t = TransformPow(factor=3.0)
x = torch.tensor([1.0, 2.0, 3.0])
t(x)
tensor([ 1.,  8., 27.])
inverse(x)[source]

Apply the inverse transform (square root).

Parameters:

x (torch.Tensor) – Input tensor in \(\mathbb{R}\).

Returns:

Element-wise \(\sqrt{x}\).

Return type:

torch.Tensor

Example:

import torch
from torch_openreml.covariance.transform import TransformPow

t = TransformPow(factor=2.0)
x = torch.tensor([1.0, 4.0, 9.0])
t.inverse(x)
tensor([1., 2., 3.])
grad(x)[source]

Compute derivative of \(x^p\) for chain rule propagation.

Note

\[\frac{d}{dx} x^p = p x^{p-1}\]
Parameters:

x (torch.Tensor) – Input tensor.

Returns:

\(p x^{p-1}\).

Return type:

torch.Tensor

Example:

import torch
from torch_openreml.covariance.transform import TransformPow

t = TransformPow(factor=3.0)
x = torch.tensor([2.0, 3.0])
t.grad(x)
tensor([6., 9.])