mindspore.nn.probability.bijector.GumbelCDF

class mindspore.nn.probability.bijector.GumbelCDF(loc=0.0, scale=1.0, name='GumbelCDF')[源代码]

GumbelCDF Bijector。 此Bijector对应的映射函数为:

\[Y = g(x) = \exp(-\exp(\frac{-(X - loc)}{scale}))\]

参数:

  • loc (float, list, numpy.ndarray, Tensor) - 位移因子,即上述公式中的loc。默认值:0.0。

  • scale (float, list, numpy.ndarray, Tensor) - 比例因子,即上述公式中的scale。默认值:1.0。

  • name (str) - Bijector名称。默认值:’GumbelCDF’。

Note

  • scale 中元素必须大于零。

  • 对于 inverseinverse_log_jacobian ,输入应在(0, 1)范围内。

  • locscale 中元素的数据类型必须为float。

  • 如果 locscale 作为numpy.ndarray或Tensor传入,则它们必须具有相同的数据类型,否则将引发错误。

异常:

  • TypeError - locscale 中元素的数据类型不为float,或 locscale 中元素的数据类型不相同。

支持平台:

Ascend GPU

样例:

>>> import mindspore
>>> import mindspore.nn as nn
>>> import mindspore.nn.probability.bijector as msb
>>> from mindspore import Tensor
>>>
>>> # To initialize a GumbelCDF bijector of loc 1.0, and scale 2.0.
>>> gumbel_cdf = msb.GumbelCDF(1.0, 2.0)
>>> # To use a GumbelCDF bijector in a network.
>>> x = Tensor([1, 2, 3], dtype=mindspore.float32)
>>> y = Tensor([0.1, 0.2, 0.3], dtype=mindspore.float32)
>>> ans1 = gumbel_cdf.forward(x)
>>> print(ans1.shape)
(3,)
>>> ans2 = gumbel_cdf.inverse(y)
>>> print(ans2.shape)
(3,)
>>> ans3 = gumbel_cdf.forward_log_jacobian(x)
>>> print(ans3.shape)
(3,)
>>> ans4 = gumbel_cdf.inverse_log_jacobian(y)
>>> print(ans4.shape)
(3,)
property loc

返回分布位置。

返回:

Tensor,分布的位置值。

property scale

返回分布比例。

返回:

Tensor,分布的比例值。

forward(value)

正映射,计算输入随机变量 \(X = value\) 经过映射后的值 \(Y = g(value)\)

参数:

  • value (Tensor) - 输入随机变量的值。

返回:

Tensor,输入随机变量的值。

forward_log_jacobian(value)

计算正映射导数的对数值,即 \(\log(dg(x) / dx)\)

参数:

  • value (Tensor) - 输入随机变量的值。

返回:

Tensor,正映射导数的对数值。

inverse(value)

正映射,计算输出随机变量 \(Y = value\) 时对应的输入随机变量的值 \(X = g(value)\)

参数:

  • value (Tensor) - 输出随机变量的值。

返回:

Tensor,输出随机变量的值。

inverse_log_jacobian(value)

计算逆映射导数的对数值,即 \(\log(dg^{-1}(x) / dx)\)

参数:

  • value (Tensor) - 输出随机变量的值。

返回:

Tensor,逆映射导数的对数值。