mindspore.nn.probability.bijector.PowerTransform

class mindspore.nn.probability.bijector.PowerTransform(power=0.0, name='PowerTransform')[source]

PowerTransform Bijector. This Bijector performs the operation:

\[Y = g(X) = (1 + X * c)^{1 / c}, X >= -1 / c\]

where c >= 0 is the power.

The power transform maps inputs from [-1/c, inf] to [0, inf].

This Bijector is equivalent to the Exp bijector when c=0.

Parameters
Inputs and Outputs of APIs:

The accessible APIs of the PowerTransform bijector are defined in the base class, including:

  • forward

  • inverse

  • forward_log_jacobian

  • backward_log_jacobian

It should be notice that the inputs to APIs of the PowerTransform bijector should be always a tensor, with a shape that can be broadcasted to that of power. For more details of all APIs, including the inputs and outputs of the PowerTransform bijector, please refer to mindspore.nn.probability.bijector.Bijector, and examples below.

Supported Platforms:

Ascend GPU

Note

The dtype of power must be float.

Raises
  • ValueError – When power is less than 0 or is not known statically.

  • TypeError – When the dtype of power is not float.

Examples

>>> import mindspore
>>> import mindspore.nn as nn
>>> import mindspore.nn.probability.bijector as msb
>>> from mindspore import Tensor
>>> # To initialize a PowerTransform bijector of power 0.5.
>>> powertransform = msb.PowerTransform(0.5)
>>> value = Tensor([1, 2, 3], dtype=mindspore.float32)
>>> ans1 = powertransform.forward(value)
>>> print(ans1.shape)
(3,)
>>> ans2 = powertransform.inverse(value)
>>> print(ans2.shape)
(3,)
>>> ans3 = powertransform.forward_log_jacobian(value)
>>> print(ans3.shape)
(3,)
>>> ans4 = powertransform.inverse_log_jacobian(value)
>>> print(ans4.shape)
(3,)
extend_repr()[source]

Display instance object as string.

property power

Return the power parameter of the bijector.

Output:

Tensor, the power parameter of the bijector.