torch.special¶
The torch.special module, modeled after SciPy’s special module.
Functions¶
-
torch.special.
entr
(input, *, out=None) → Tensor¶ Computes the entropy on
input
(as defined below), elementwise.- Parameters
input (Tensor) – the input tensor.
- Keyword Arguments
out (Tensor, optional) – the output tensor.
- Example::
>>> a = torch.arange(-0.5, 1, 0.5) >>> a tensor([-0.5000, 0.0000, 0.5000]) >>> torch.special.entr(a) tensor([ -inf, 0.0000, 0.3466])
-
torch.special.
erf
(input, *, out=None) → Tensor¶ Computes the error function of
input
. The error function is defined as follows:- Parameters
input (Tensor) – the input tensor.
- Keyword Arguments
out (Tensor, optional) – the output tensor.
Example:
>>> torch.special.erf(torch.tensor([0, -1., 10.])) tensor([ 0.0000, -0.8427, 1.0000])
-
torch.special.
erfc
(input, *, out=None) → Tensor¶ Computes the complementary error function of
input
. The complementary error function is defined as follows:- Parameters
input (Tensor) – the input tensor.
- Keyword Arguments
out (Tensor, optional) – the output tensor.
Example:
>>> torch.special.erfc(torch.tensor([0, -1., 10.])) tensor([ 1.0000, 1.8427, 0.0000])
-
torch.special.
erfcx
(input, *, out=None) → Tensor¶ Computes the scaled complementary error function for each element of
input
. The scaled complementary error function is defined as follows:- Parameters
input (Tensor) – the input tensor.
- Keyword Arguments
out (Tensor, optional) – the output tensor.
Example:
>>> torch.special.erfcx(torch.tensor([0, -1., 10.])) tensor([ 1.0000, 5.0090, 0.0561])
-
torch.special.
erfinv
(input, *, out=None) → Tensor¶ Computes the inverse error function of
input
. The inverse error function is defined in the range as:- Parameters
input (Tensor) – the input tensor.
- Keyword Arguments
out (Tensor, optional) – the output tensor.
Example:
>>> torch.special.erfinv(torch.tensor([0, 0.5, -1.])) tensor([ 0.0000, 0.4769, -inf])
-
torch.special.
expit
(input, *, out=None) → Tensor¶ Computes the expit (also known as the logistic sigmoid function) of the elements of
input
.- Parameters
input (Tensor) – the input tensor.
- Keyword Arguments
out (Tensor, optional) – the output tensor.
Example:
>>> t = torch.randn(4) >>> t tensor([ 0.9213, 1.0887, -0.8858, -1.7683]) >>> torch.special.expit(t) tensor([ 0.7153, 0.7481, 0.2920, 0.1458])
-
torch.special.
expm1
(input, *, out=None) → Tensor¶ Computes the exponential of the elements minus 1 of
input
.Note
This function provides greater precision than exp(x) - 1 for small values of x.
- Parameters
input (Tensor) – the input tensor.
- Keyword Arguments
out (Tensor, optional) – the output tensor.
Example:
>>> torch.special.expm1(torch.tensor([0, math.log(2.)])) tensor([ 0., 1.])
-
torch.special.
exp2
(input, *, out=None) → Tensor¶ Computes the base two exponential function of
input
.- Parameters
input (Tensor) – the input tensor.
- Keyword Arguments
out (Tensor, optional) – the output tensor.
Example:
>>> torch.special.exp2(torch.tensor([0, math.log2(2.), 3, 4])) tensor([ 1., 2., 8., 16.])
-
torch.special.
gammaln
(input, *, out=None) → Tensor¶ Computes the natural logarithm of the absolute value of the gamma function on
input
.- Parameters
input (Tensor) – the input tensor.
- Keyword Arguments
out (Tensor, optional) – the output tensor.
Example:
>>> a = torch.arange(0.5, 2, 0.5) >>> torch.special.gammaln(a) tensor([ 0.5724, 0.0000, -0.1208])
-
torch.special.
gammainc
(input, other, *, out=None) → Tensor¶ Computes the regularized lower incomplete gamma function:
where both and are weakly positive and at least one is strictly positive. If both are zero or either is negative then . in the equation above is the gamma function,
See
torch.special.gammaincc()
andtorch.special.gammaln()
for related functions.Supports broadcasting to a common shape and float inputs.
Note
The backward pass with respect to
input
is not yet supported. Please open an issue on PyTorch’s Github to request it.- Parameters
- Keyword Arguments
out (Tensor, optional) – the output tensor.
Example:
>>> a1 = torch.tensor([4.0]) >>> a2 = torch.tensor([3.0, 4.0, 5.0]) >>> a = torch.special.gammaincc(a1, a2) tensor([0.3528, 0.5665, 0.7350]) tensor([0.3528, 0.5665, 0.7350]) >>> b = torch.special.gammainc(a1, a2) + torch.special.gammaincc(a1, a2) tensor([1., 1., 1.])
-
torch.special.
gammaincc
(input, other, *, out=None) → Tensor¶ Computes the regularized upper incomplete gamma function:
where both and are weakly positive and at least one is strictly positive. If both are zero or either is negative then . in the equation above is the gamma function,
See
torch.special.gammainc()
andtorch.special.gammaln()
for related functions.Supports broadcasting to a common shape and float inputs.
Note
The backward pass with respect to
input
is not yet supported. Please open an issue on PyTorch’s Github to request it.- Parameters
- Keyword Arguments
out (Tensor, optional) – the output tensor.
Example:
>>> a1 = torch.tensor([4.0]) >>> a2 = torch.tensor([3.0, 4.0, 5.0]) >>> a = torch.special.gammaincc(a1, a2) tensor([0.6472, 0.4335, 0.2650]) >>> b = torch.special.gammainc(a1, a2) + torch.special.gammaincc(a1, a2) tensor([1., 1., 1.])
-
torch.special.
polygamma
(n, input, *, out=None) → Tensor¶ Computes the derivative of the digamma function on
input
. is called the order of the polygamma function.Note
This function is implemented only for nonnegative integers .
- Parameters
- Keyword Arguments
out (Tensor, optional) – the output tensor.
- Example::
>>> a = torch.tensor([1, 0.5]) >>> torch.special.polygamma(1, a) tensor([1.64493, 4.9348]) >>> torch.special.polygamma(2, a) tensor([ -2.4041, -16.8288]) >>> torch.special.polygamma(3, a) tensor([ 6.4939, 97.4091]) >>> torch.special.polygamma(4, a) tensor([ -24.8863, -771.4742])
-
torch.special.
digamma
(input, *, out=None) → Tensor¶ Computes the logarithmic derivative of the gamma function on input.
- Parameters
input (Tensor) – the tensor to compute the digamma function on
- Keyword Arguments
out (Tensor, optional) – the output tensor.
Note
This function is similar to SciPy’s scipy.special.digamma.
Note
From PyTorch 1.8 onwards, the digamma function returns -Inf for 0. Previously it returned NaN for 0.
Example:
>>> a = torch.tensor([1, 0.5]) >>> torch.special.digamma(a) tensor([-0.5772, -1.9635])
-
torch.special.
psi
(input, *, out=None) → Tensor¶ Alias for
torch.special.digamma()
.
-
torch.special.
i0
(input, *, out=None) → Tensor¶ Computes the zeroth order modified Bessel function of the first kind for each element of
input
.- Parameters
input (Tensor) – the input tensor
- Keyword Arguments
out (Tensor, optional) – the output tensor.
Example:
>>> torch.i0(torch.arange(5, dtype=torch.float32)) tensor([ 1.0000, 1.2661, 2.2796, 4.8808, 11.3019])
-
torch.special.
i0e
(input, *, out=None) → Tensor¶ Computes the exponentially scaled zeroth order modified Bessel function of the first kind (as defined below) for each element of
input
.- Parameters
input (Tensor) – the input tensor.
- Keyword Arguments
out (Tensor, optional) – the output tensor.
- Example::
>>> torch.special.i0e(torch.arange(5, dtype=torch.float32)) tensor([1.0000, 0.4658, 0.3085, 0.2430, 0.2070])
-
torch.special.
i1
(input, *, out=None) → Tensor¶ Computes the first order modified Bessel function of the first kind (as defined below) for each element of
input
.- Parameters
input (Tensor) – the input tensor.
- Keyword Arguments
out (Tensor, optional) – the output tensor.
- Example::
>>> torch.special.i1(torch.arange(5, dtype=torch.float32)) tensor([0.0000, 0.5652, 1.5906, 3.9534, 9.7595])
-
torch.special.
i1e
(input, *, out=None) → Tensor¶ Computes the exponentially scaled first order modified Bessel function of the first kind (as defined below) for each element of
input
.- Parameters
input (Tensor) – the input tensor.
- Keyword Arguments
out (Tensor, optional) – the output tensor.
- Example::
>>> torch.special.i1e(torch.arange(5, dtype=torch.float32)) tensor([0.0000, 0.2079, 0.2153, 0.1968, 0.1788])
-
torch.special.
logit
(input, eps=None, *, out=None) → Tensor¶ Returns a new tensor with the logit of the elements of
input
.input
is clamped to [eps, 1 - eps] when eps is not None. When eps is None andinput
< 0 orinput
> 1, the function will yields NaN.- Parameters
- Keyword Arguments
out (Tensor, optional) – the output tensor.
Example:
>>> a = torch.rand(5) >>> a tensor([0.2796, 0.9331, 0.6486, 0.1523, 0.6516]) >>> torch.special.logit(a, eps=1e-6) tensor([-0.9466, 2.6352, 0.6131, -1.7169, 0.6261])
-
torch.special.
logsumexp
(input, dim, keepdim=False, *, out=None)¶ Alias for
torch.logsumexp()
.
-
torch.special.
log1p
(input, *, out=None) → Tensor¶ Alias for
torch.log1p()
.
-
torch.special.
log_softmax
(input, dim, *, dtype=None) → Tensor¶ Computes softmax followed by a logarithm.
While mathematically equivalent to log(softmax(x)), doing these two operations separately is slower and numerically unstable. This function is computed as:
- Parameters
input (Tensor) – input
dim (int) – A dimension along which log_softmax will be computed.
dtype (
torch.dtype
, optional) – the desired data type of returned tensor. If specified, the input tensor is cast todtype
before the operation is performed. This is useful for preventing data type overflows. Default: None.
- Example::
>>> t = torch.ones(2, 2) >>> torch.special.log_softmax(t, 0) tensor([[-0.6931, -0.6931], [-0.6931, -0.6931]])
-
torch.special.
multigammaln
(input, p, *, out=None) → Tensor¶ Computes the multivariate log-gamma function with dimension element-wise, given by
where and is the Gamma function.
All elements must be greater than , otherwise an error would be thrown.
- Parameters
- Keyword Arguments
out (Tensor, optional) – the output tensor.
Example:
>>> a = torch.empty(2, 3).uniform_(1, 2) >>> a tensor([[1.6835, 1.8474, 1.1929], [1.0475, 1.7162, 1.4180]]) >>> torch.special.multigammaln(a, 2) tensor([[0.3928, 0.4007, 0.7586], [1.0311, 0.3901, 0.5049]])
-
torch.special.
ndtr
(input, *, out=None) → Tensor¶ Computes the area under the standard Gaussian probability density function, integrated from minus infinity to
input
, elementwise.- Parameters
input (Tensor) – the input tensor.
- Keyword Arguments
out (Tensor, optional) – the output tensor.
- Example::
>>> torch.special.ndtr(torch.tensor([-3., -2, -1, 0, 1, 2, 3])) tensor([0.0013, 0.0228, 0.1587, 0.5000, 0.8413, 0.9772, 0.9987])
-
torch.special.
ndtri
(input, *, out=None) → Tensor¶ Computes the argument, x, for which the area under the Gaussian probability density function (integrated from minus infinity to x) is equal to
input
, elementwise.Note
Also known as quantile function for Normal Distribution.
- Parameters
input (Tensor) – the input tensor.
- Keyword Arguments
out (Tensor, optional) – the output tensor.
- Example::
>>> torch.special.ndtri(torch.tensor([0, 0.25, 0.5, 0.75, 1])) tensor([ -inf, -0.6745, 0.0000, 0.6745, inf])
-
torch.special.
round
(input, *, out=None) → Tensor¶ Alias for
torch.round()
.
-
torch.special.
sinc
(input, *, out=None) → Tensor¶ Computes the normalized sinc of
input.
- Parameters
input (Tensor) – the input tensor.
- Keyword Arguments
out (Tensor, optional) – the output tensor.
- Example::
>>> t = torch.randn(4) >>> t tensor([ 0.2252, -0.2948, 1.0267, -1.1566]) >>> torch.special.sinc(t) tensor([ 0.9186, 0.8631, -0.0259, -0.1300])
-
torch.special.
xlog1py
(input, other, *, out=None) → Tensor¶ Computes
input * log1p(other)
with the following cases.Similar to SciPy’s scipy.special.xlog1py.
Note
At least one of
input
orother
must be a tensor.- Keyword Arguments
out (Tensor, optional) – the output tensor.
Example:
>>> x = torch.zeros(5,) >>> y = torch.tensor([-1, 0, 1, float('inf'), float('nan')]) >>> torch.special.xlog1py(x, y) tensor([0., 0., 0., 0., nan]) >>> x = torch.tensor([1, 2, 3]) >>> y = torch.tensor([3, 2, 1]) >>> torch.special.xlog1py(x, y) tensor([1.3863, 2.1972, 2.0794]) >>> torch.special.xlog1py(x, 4) tensor([1.6094, 3.2189, 4.8283]) >>> torch.special.xlog1py(2, y) tensor([2.7726, 2.1972, 1.3863])
-
torch.special.
xlogy
(input, other, *, out=None) → Tensor¶ Computes
input * log(other)
with the following cases.Similar to SciPy’s scipy.special.xlogy.
Note
At least one of
input
orother
must be a tensor.- Keyword Arguments
out (Tensor, optional) – the output tensor.
Example:
>>> x = torch.zeros(5,) >>> y = torch.tensor([-1, 0, 1, float('inf'), float('nan')]) >>> torch.special.xlogy(x, y) tensor([0., 0., 0., 0., nan]) >>> x = torch.tensor([1, 2, 3]) >>> y = torch.tensor([3, 2, 1]) >>> torch.special.xlogy(x, y) tensor([1.0986, 1.3863, 0.0000]) >>> torch.special.xlogy(x, 4) tensor([1.3863, 2.7726, 4.1589]) >>> torch.special.xlogy(2, y) tensor([2.1972, 1.3863, 0.0000])
-
torch.special.
zeta
(input, other, *, out=None) → Tensor¶ Computes the Hurwitz zeta function, elementwise.
- Parameters
Note
The Riemann zeta function corresponds to the case when q = 1
- Keyword Arguments
out (Tensor, optional) – the output tensor.
- Example::
>>> x = torch.tensor([2., 4.]) >>> torch.special.zeta(x, 1) tensor([1.6449, 1.0823]) >>> torch.special.zeta(x, torch.tensor([1., 2.])) tensor([1.6449, 0.0823]) >>> torch.special.zeta(2, torch.tensor([1., 2.])) tensor([1.6449, 0.6449])