Spec-Zone.ru › PyTorch 2.14

torch.special

Создано: 04 мар. 2021 | Последнее обновление: 18 июн. 2025

Модуль torch.special, созданный по образцу модуля special библиотеки SciPy.

Функции

torch.special.airy_ai(input, *, out=None) → Tensor [исходный код]

Функция Эйри Ai(input)\text{Ai}\left(\text{input}\right).

Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.bessel_j0(input, *, out=None) → Tensor [исходный код]

Функция Бесселя первого рода нулевого порядка 00.

Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.bessel_j1(input, *, out=None) → Tensor [исходный код]

Функция Бесселя первого рода первого порядка 11.

Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.bessel_y0(input, *, out=None) → Tensor [исходный код]

Функция Бесселя второго рода нулевого порядка 00.

Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.bessel_y1(input, *, out=None) → Tensor [исходный код]

Функция Бесселя второго рода первого порядка 11.

Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.chebyshev_polynomial_t(input, n, *, out=None) → Tensor [исходный код]

Полином Чебышёва первого рода Tn(input)T_{n}(\text{input}).

Если n=0n = 0, возвращается 11. Если n=1n = 1, возвращается input\text{input}. Если n<6n < 6 или ∣input∣>1|\text{input}| > 1, вычисляется рекуррентное соотношение:

Tn+1(input)=2×input×Tn(input)−Tn−1(input)T_{n + 1}(\text{input}) = 2 \times \text{input} \times T_{n}(\text{input}) - T_{n - 1}(\text{input})

В противном случае вычисляется явная тригонометрическая формула:

Tn(input)=cos(n×arccos(x))T_{n}(\text{input}) = \text{cos}(n \times \text{arccos}(x))

.

Параметры:
  • input (Tensor) – входной тензор.
  • n (Tensor) – степень полинома.
Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.chebyshev_polynomial_u(input, n, *, out=None) → Tensor [исходный код]

Полином Чебышёва второго рода Un(input)U_{n}(\text{input}).

Если n=0n = 0, возвращается 11. Если n=1n = 1, возвращается 2×input2 \times \text{input}. Если n<6n < 6 или ∣input∣>1|\text{input}| > 1, вычисляется рекуррентное соотношение:

Un+1(input)=2×input×Un(input)−Un−1(input)U_{n + 1}(\text{input}) = 2 \times \text{input} \times U_{n}(\text{input}) - U_{n - 1}(\text{input})

В противном случае вычисляется явная тригонометрическая формула:

sin((n+1)×arccos(input))sin(arccos(input))\frac{\text{sin}((n + 1) \times \text{arccos}(\text{input}))}{\text{sin}(\text{arccos}(\text{input}))}

.

Параметры:
  • input (Tensor) – входной тензор.
  • n (Tensor) – степень полинома.
Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.chebyshev_polynomial_v(input, n, *, out=None) → Tensor [исходный код]

Полином Чебышёва третьего рода Vn∗(input)V_{n}^{\ast}(\text{input}).

Параметры:
  • input (Tensor) – входной тензор.
  • n (Tensor) – степень полинома.
Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.chebyshev_polynomial_w(input, n, *, out=None) → Tensor [исходный код]

Полином Чебышёва четвёртого рода Wn∗(input)W_{n}^{\ast}(\text{input}).

Параметры:
  • input (Tensor) – входной тензор.
  • n (Tensor) – степень полинома.
Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.digamma(input, *, out=None) → Tensor [исходный код]

Вычисляет логарифмическую производную гамма-функции для input.

ϝ(x)=ddxln⁡(Γ(x))=Γ′(x)Γ(x)\digamma(x) = \frac{d}{dx} \ln\left(\Gamma\left(x\right)\right) = \frac{\Gamma'(x)}{\Gamma(x)}
Параметры:

input (Tensor) – тензор, для которого вычисляется функция дигамма

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Примечание

Эта функция аналогична scipy.special.digamma в SciPy.

Примечание

Начиная с PyTorch 1.8 функция дигамма возвращает -Inf для 0. Ранее она возвращала NaN для 0.

Пример:

>>> a = torch.tensor([1, 0.5])
>>> torch.special.digamma(a)
tensor([-0.5772, -1.9635])
torch.special.entr(input, *, out=None) → Tensor [исходный код]

Поэлементно вычисляет энтропию для input (определённую ниже).

entr(x)={−x∗ln⁡(x)x>00x=0.0−∞x<0\begin{align} \text{entr(x)} = \begin{cases} -x * \ln(x) & x > 0 \\ 0 & x = 0.0 \\ -\infty & x < 0 \end{cases} \end{align}
Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> 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 [исходный код]

Вычисляет функцию ошибок для input. Функция ошибок определяется следующим образом:

erf(x)=2π∫0xe−t2dt\mathrm{erf}(x) = \frac{2}{\sqrt{\pi}} \int_{0}^{x} e^{-t^2} dt
Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> torch.special.erf(torch.tensor([0, -1., 10.]))
tensor([ 0.0000, -0.8427,  1.0000])
torch.special.erfc(input, *, out=None) → Tensor [исходный код]

Вычисляет дополнительную функцию ошибок для input. Дополнительная функция ошибок определяется следующим образом:

erfc(x)=1−2π∫0xe−t2dt\mathrm{erfc}(x) = 1 - \frac{2}{\sqrt{\pi}} \int_{0}^{x} e^{-t^2} dt
Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> torch.special.erfc(torch.tensor([0, -1., 10.]))
tensor([ 1.0000, 1.8427,  0.0000])
torch.special.erfcx(input, *, out=None) → Tensor [исходный код]

Вычисляет масштабированную дополнительную функцию ошибок для каждого элемента input. Масштабированная дополнительная функция ошибок определяется следующим образом:

erfcx(x)=ex2erfc(x)\mathrm{erfcx}(x) = e^{x^2} \mathrm{erfc}(x)
Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> torch.special.erfcx(torch.tensor([0, -1., 10.]))
tensor([ 1.0000, 5.0090, 0.0561])
torch.special.erfinv(input, *, out=None) → Tensor [исходный код]

Вычисляет обратную функцию ошибок для input. Обратная функция ошибок определена на интервале (−1,1)(-1, 1) следующим образом:

erfinv(erf(x))=x\mathrm{erfinv}(\mathrm{erf}(x)) = x
Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> torch.special.erfinv(torch.tensor([0, 0.5, -1.]))
tensor([ 0.0000,  0.4769,    -inf])
torch.special.exp2(input, *, out=None) → Tensor [исходный код]

Вычисляет экспоненциальную функцию с основанием 2 для input.

yi=2xiy_{i} = 2^{x_{i}}
Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательно) – выходной тензор.

Пример:

>>> torch.special.exp2(torch.tensor([0, math.log2(2.), 3, 4]))
tensor([ 1.,  2.,  8., 16.])
torch.special.expit(input, *, out=None) → Tensor [исходный код]

Вычисляет expit (также известную как логистическая сигмоидная функция) для элементов input.

outi=11+e−inputi\text{out}_{i} = \frac{1}{1 + e^{-\text{input}_{i}}}
Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательно) – выходной тензор.

Пример:

>>> 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 [исходный код]

Вычисляет экспоненту элементов за вычетом 1 для input.

yi=exi−1y_{i} = e^{x_{i}} - 1

Примечание

Для малых значений x эта функция обеспечивает более высокую точность, чем exp(x) - 1.

Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательно) – выходной тензор.

Пример:

>>> torch.special.expm1(torch.tensor([0, math.log(2.)]))
tensor([ 0.,  1.])
torch.special.gammainc(input, other, *, out=None) → Tensor [исходный код]

Вычисляет регуляризованную нижнюю неполную гамма-функцию:

outi=1Γ(inputi)∫0otheritinputi−1e−tdt\text{out}_{i} = \frac{1}{\Gamma(\text{input}_i)} \int_0^{\text{other}_i} t^{\text{input}_i-1} e^{-t} dt

где оба значения inputi\text{input}_i и otheri\text{other}_i неотрицательны, причём хотя бы одно из них строго положительно. Если оба равны нулю или любое из них отрицательно, то outi=nan\text{out}_i=\text{nan}. Γ(⋅)\Gamma(\cdot) в приведённом выше уравнении — это гамма-функция,

Γ(inputi)=∫0∞t(inputi−1)e−tdt.\Gamma(\text{input}_i) = \int_0^\infty t^{(\text{input}_i-1)} e^{-t} dt.

См. torch.special.gammaincc() и torch.special.gammaln() — родственные функции.

Поддерживает трансляцию к общей форме и значения с плавающей точкой.

Примечание

Обратный проход по input пока не поддерживается. Чтобы запросить эту возможность, создайте issue в GitHub PyTorch.

Параметры:
  • input (Tensor) – первый неотрицательный входной тензор
  • other (Tensor) – второй неотрицательный входной тензор
Именованные аргументы:

out (Tensor, необязательно) – выходной тензор.

Пример:

>>> 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 [исходный код]

Вычисляет регуляризованную верхнюю неполную гамма-функцию:

outi=1Γ(inputi)∫otheri∞tinputi−1e−tdt\text{out}_{i} = \frac{1}{\Gamma(\text{input}_i)} \int_{\text{other}_i}^{\infty} t^{\text{input}_i-1} e^{-t} dt

где оба значения inputi\text{input}_i и otheri\text{other}_i неотрицательны, причём хотя бы одно из них строго положительно. Если оба равны нулю или любое из них отрицательно, то outi=nan\text{out}_i=\text{nan}. Γ(⋅)\Gamma(\cdot) в приведённом выше уравнении — это гамма-функция,

Γ(inputi)=∫0∞t(inputi−1)e−tdt.\Gamma(\text{input}_i) = \int_0^\infty t^{(\text{input}_i-1)} e^{-t} dt.

См. torch.special.gammainc() и torch.special.gammaln() — родственные функции.

Поддерживает трансляцию к общей форме и значения с плавающей точкой.

Примечание

Обратный проход по input пока не поддерживается. Чтобы запросить эту возможность, создайте issue в GitHub PyTorch.

Параметры:
  • input (Tensor) – первый неотрицательный входной тензор
  • other (Tensor) – второй неотрицательный входной тензор
Именованные аргументы:

out (Tensor, необязательно) – выходной тензор.

Пример:

>>> 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.gammaln(input, *, out=None) → Tensor [исходный код]

Вычисляет натуральный логарифм модуля гамма-функции для input.

outi=ln⁡Γ(∣inputi∣)\text{out}_{i} = \ln \Gamma(|\text{input}_{i}|)
Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательно) – выходной тензор.

Пример:

>>> a = torch.arange(0.5, 2, 0.5)
>>> torch.special.gammaln(a)
tensor([ 0.5724,  0.0000, -0.1208])
torch.special.hermite_polynomial_h(input, n, *, out=None) → Tensor [исходный код]

Полином Эрмита для физиков Hn(input)H_{n}(\text{input}).

Если n=0n = 0, возвращается 11. Если n=1n = 1, возвращается input\text{input}. В противном случае вычисляется рекуррентное соотношение:

Hn+1(input)=2×input×Hn(input)−Hn−1(input)H_{n + 1}(\text{input}) = 2 \times \text{input} \times H_{n}(\text{input}) - H_{n - 1}(\text{input})

.

Параметры:
  • input (Tensor) – входной тензор.
  • n (Tensor) – степень полинома.
Именованные аргументы:

out (Tensor, необязательно) – выходной тензор.

torch.special.hermite_polynomial_he(input, n, *, out=None) → Tensor [исходный код]

Полином Эрмита для теории вероятностей Hen(input)He_{n}(\text{input}).

Если n=0n = 0, возвращается 11. Если n=1n = 1, возвращается input\text{input}. В противном случае вычисляется рекуррентное соотношение:

Hen+1(input)=2×input×Hen(input)−Hen−1(input)He_{n + 1}(\text{input}) = 2 \times \text{input} \times He_{n}(\text{input}) - He_{n - 1}(\text{input})

.

Параметры:
  • input (Tensor) – входной тензор.
  • n (Tensor) – степень полинома.
Именованные аргументы:

out (Tensor, необязательно) – выходной тензор.

torch.special.i0(input, *, out=None) → Tensor [исходный код]

Вычисляет для каждого элемента input модифицированную функцию Бесселя первого рода нулевого порядка.

outi=I0(inputi)=∑k=0∞(inputi2/4)k(k!)2\text{out}_{i} = I_0(\text{input}_{i}) = \sum_{k=0}^{\infty} \frac{(\text{input}_{i}^2/4)^k}{(k!)^2}
Параметры:

input (Tensor) – входной тензор

Именованные аргументы:

out (Tensor, необязательно) – выходной тензор.

Пример:

>>> 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 [исходный код]

Вычисляет для каждого элемента input модифицированную функцию Бесселя первого рода нулевого порядка с экспоненциальным масштабированием (определённую ниже).

outi=exp⁡(−∣x∣)∗i0(x)=exp⁡(−∣x∣)∗∑k=0∞(inputi2/4)k(k!)2\text{out}_{i} = \exp(-|x|) * i0(x) = \exp(-|x|) * \sum_{k=0}^{\infty} \frac{(\text{input}_{i}^2/4)^k}{(k!)^2}
Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательно) – выходной тензор.

Пример:

>>> 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 [исходный код]

Вычисляет для каждого элемента input модифицированную функцию Бесселя первого рода первого порядка (определённую ниже).

outi=(inputi)2∗∑k=0∞(inputi2/4)k(k!)∗(k+1)!\text{out}_{i} = \frac{(\text{input}_{i})}{2} * \sum_{k=0}^{\infty} \frac{(\text{input}_{i}^2/4)^k}{(k!) * (k+1)!}
Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательно) – выходной тензор.

Пример:

>>> 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 [исходный код]

Вычисляет для каждого элемента input масштабированную экспонентой модифицированную функцию Бесселя первого рода первого порядка (определённую ниже).

outi=exp⁡(−∣x∣)∗i1(x)=exp⁡(−∣x∣)∗(inputi)2∗∑k=0∞(inputi2/4)k(k!)∗(k+1)!\text{out}_{i} = \exp(-|x|) * i1(x) = \exp(-|x|) * \frac{(\text{input}_{i})}{2} * \sum_{k=0}^{\infty} \frac{(\text{input}_{i}^2/4)^k}{(k!) * (k+1)!}
Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> torch.special.i1e(torch.arange(5, dtype=torch.float32))
tensor([0.0000, 0.2079, 0.2153, 0.1968, 0.1788])
torch.special.laguerre_polynomial_l(input, n, *, out=None) → Tensor [исходный код]

Полином Лагерра Ln(input)L_{n}(\text{input}).

Если n=0n = 0, возвращается 11. Если n=1n = 1, возвращается input\text{input}. В противном случае вычисляется рекуррентное соотношение:

Ln+1(input)=2×input×Ln(input)−Ln−1(input)L_{n + 1}(\text{input}) = 2 \times \text{input} \times L_{n}(\text{input}) - L_{n - 1}(\text{input})

.

Параметры:
  • input (Tensor) – входной тензор.
  • n (Tensor) – степень полинома.
Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.legendre_polynomial_p(input, n, *, out=None) → Tensor [исходный код]

Полином Лежандра Pn(input)P_{n}(\text{input}).

Если n=0n = 0, возвращается 11. Если n=1n = 1, возвращается input\text{input}. В противном случае вычисляется рекуррентное соотношение:

Pn+1(input)=2×input×Pn(input)−Pn−1(input)P_{n + 1}(\text{input}) = 2 \times \text{input} \times P_{n}(\text{input}) - P_{n - 1}(\text{input})

.

Параметры:
  • input (Tensor) – входной тензор.
  • n (Tensor) – степень полинома.
Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.log1p(input, *, out=None) → Tensor [исходный код]

Псевдоним для torch.log1p().

torch.special.log_ndtr(input, *, out=None) → Tensor [исходный код]

Поэлементно вычисляет логарифм площади под стандартной функцией плотности вероятности Гаусса, интегрируемой от минус бесконечности до input.

log_ndtr(x)=log⁡(12π∫−∞xe−12t2dt)\text{log\_ndtr}(x) = \log\left(\frac{1}{\sqrt{2 \pi}}\int_{-\infty}^{x} e^{-\frac{1}{2}t^2} dt \right)
Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> torch.special.log_ndtr(torch.tensor([-3., -2, -1, 0, 1, 2, 3]))
tensor([-6.6077 -3.7832 -1.841  -0.6931 -0.1728 -0.023  -0.0014])
torch.special.log_softmax(input, dim, *, dtype=None) → Tensor [исходный код]

Вычисляет softmax, а затем логарифм.

Хотя математически это эквивалентно log(softmax(x)), выполнение этих двух операций по отдельности медленнее и численно нестабильно. Эта функция вычисляется следующим образом:

log_softmax(xi)=log⁡(exp⁡(xi)∑jexp⁡(xj))\text{log\_softmax}(x_{i}) = \log\left(\frac{\exp(x_i) }{ \sum_j \exp(x_j)} \right)
Параметры:
  • input (Tensor) – входные данные
  • dim (int) – измерение, вдоль которого вычисляется log_softmax.
  • dtype (torch.dtype, необязательный) – требуемый тип данных возвращаемого тензора. Если указан, входной тензор перед выполнением операции приводится к типу dtype. Это полезно для предотвращения переполнения типа данных. По умолчанию: None.

Пример:

>>> t = torch.ones(2, 2)
>>> torch.special.log_softmax(t, 0)
tensor([[-0.6931, -0.6931],
        [-0.6931, -0.6931]])
torch.special.logit(input, eps=None, *, out=None) → Tensor [исходный код]

Возвращает новый тензор, содержащий логит элементов input. input ограничивается диапазоном [eps, 1 - eps], если eps не равен None. Если eps равен None и input < 0 или input > 1, функция возвращает NaN.

yi=ln⁡(zi1−zi)zi={xiif eps is Noneepsif xi<epsxiif eps≤xi≤1−eps1−epsif xi>1−eps\begin{align} y_{i} &= \ln(\frac{z_{i}}{1 - z_{i}}) \\ z_{i} &= \begin{cases} x_{i} & \text{if eps is None} \\ \text{eps} & \text{if } x_{i} < \text{eps} \\ x_{i} & \text{if } \text{eps} \leq x_{i} \leq 1 - \text{eps} \\ 1 - \text{eps} & \text{if } x_{i} > 1 - \text{eps} \end{cases} \end{align}
Параметры:
  • input (Tensor) – входной тензор.
  • eps (float, необязательный) – эпсилон для границы ограничения входных данных. По умолчанию: None
Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> 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) [исходный код]

Псевдоним для torch.logsumexp().

torch.special.modified_bessel_i0(input, *, out=None) → Tensor [исходный код]

Модифицированная функция Бесселя первого рода порядка 00.

Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.modified_bessel_i1(input, *, out=None) → Tensor [исходный код]

Модифицированная функция Бесселя первого рода порядка 11.

Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.modified_bessel_k0(input, *, out=None) → Tensor [исходный код]

Модифицированная функция Бесселя второго рода порядка 00.

Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.modified_bessel_k1(input, *, out=None) → Tensor [исходный код]

Модифицированная функция Бесселя второго рода порядка 11.

Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.multigammaln(input, p, *, out=None) → Tensor [исходный код]

Поэлементно вычисляет многомерную логарифмическую гамма-функцию размерности pp, заданную формулой

log⁡(Γp(a))=C+∑i=1plog⁡(Γ(a−i−12))\log(\Gamma_{p}(a)) = C + \displaystyle \sum_{i=1}^{p} \log\left(\Gamma\left(a - \frac{i - 1}{2}\right)\right)

где C=log⁡(π)⋅p(p−1)4C = \log(\pi) \cdot \frac{p (p - 1)}{4}, а Γ(−)\Gamma(-) — гамма-функция.

Все элементы должны быть больше p−12\frac{p - 1}{2}, в противном случае поведение не определено.

Параметры:
  • input (Tensor) – тензор, для которого вычисляется многомерная логарифмическая гамма-функция
  • p (int) – число измерений
Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> 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 [исходный код]

Поэлементно вычисляет площадь под стандартной функцией плотности вероятности Гаусса, интегрируемой от минус бесконечности до input.

ndtr(x)=12π∫−∞xe−12t2dt\text{ndtr}(x) = \frac{1}{\sqrt{2 \pi}}\int_{-\infty}^{x} e^{-\frac{1}{2}t^2} dt
Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> 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 [исходный код]

Поэлементно вычисляет аргумент x, при котором площадь под функцией плотности вероятности Гаусса (интегрируемой от минус бесконечности до x) равна input.

ndtri(p)=2erf−1(2p−1)\text{ndtri}(p) = \sqrt{2}\text{erf}^{-1}(2p - 1)

Примечание

Также известна как квантильная функция нормального распределения.

Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> torch.special.ndtri(torch.tensor([0, 0.25, 0.5, 0.75, 1]))
tensor([   -inf, -0.6745,  0.0000,  0.6745,     inf])
torch.special.polygamma(n, input, *, out=None) → Tensor [исходный код]

Вычисляет nthn^{th}-ю производную дигамма-функции на input. n≥0n \geq 0 называется порядком полигамма-функции.

ψ(n)(x)=d(n)dx(n)ψ(x)\psi^{(n)}(x) = \frac{d^{(n)}}{dx^{(n)}} \psi(x)

Примечание

Эта функция реализована только для неотрицательных целых чисел n≥0n \geq 0.

Параметры:
  • n (int) – порядок полигамма-функции
  • input (Tensor) – входной тензор.
Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> 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.psi(input, *, out=None) → Tensor [исходный код]

Псевдоним для torch.special.digamma().

torch.special.round(input, *, out=None) → Tensor [исходный код]

Псевдоним для torch.round().

torch.special.scaled_modified_bessel_k0(input, *, out=None) → Tensor [исходный код]

Масштабированная модифицированная функция Бесселя второго рода порядка 00.

Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.scaled_modified_bessel_k1(input, *, out=None) → Tensor [исходный код]

Масштабированная модифицированная функция Бесселя второго рода порядка 11.

Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.shifted_chebyshev_polynomial_t(input, n, *, out=None) → Tensor [исходный код]

Многочлен Чебышёва первого рода Tn∗(input)T_{n}^{\ast}(\text{input}).

Параметры:
  • input (Tensor) – входной тензор.
  • n (Tensor) – степень многочлена.
Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.shifted_chebyshev_polynomial_u(input, n, *, out=None) → Tensor [исходный код]

Многочлен Чебышёва второго рода Un∗(input)U_{n}^{\ast}(\text{input}).

Параметры:
  • input (Tensor) – входной тензор.
  • n (Tensor) – степень многочлена.
Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.shifted_chebyshev_polynomial_v(input, n, *, out=None) → Tensor [исходный код]

Многочлен Чебышёва третьего рода Vn∗(input)V_{n}^{\ast}(\text{input}).

Параметры:
  • input (Tensor) – входной тензор.
  • n (Tensor) – степень многочлена.
Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.shifted_chebyshev_polynomial_w(input, n, *, out=None) → Tensor [исходный код]

Многочлен Чебышёва четвёртого рода Wn∗(input)W_{n}^{\ast}(\text{input}).

Параметры:
  • input (Tensor) – входной тензор.
  • n (Tensor) – степень многочлена.
Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.sinc(input, *, out=None) → Tensor [исходный код]

Вычисляет нормированную функцию sinc для input.

outi={1,if inputi=0sin⁡(πinputi)/(πinputi),otherwise\text{out}_{i} = \begin{cases} 1, & \text{if}\ \text{input}_{i}=0 \\ \sin(\pi \text{input}_{i}) / (\pi \text{input}_{i}), & \text{otherwise} \end{cases}
Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> 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.softmax(input, dim, *, dtype=None) → Tensor [исходный код]

Вычисляет функцию softmax.

Функция softmax определяется следующим образом:

Softmax(xi)=exp⁡(xi)∑jexp⁡(xj)\text{Softmax}(x_{i}) = \frac{\exp(x_i)}{\sum_j \exp(x_j)}

Она применяется ко всем срезам вдоль dim и масштабирует их так, чтобы элементы находились в диапазоне [0, 1], а их сумма равнялась 1.

Параметры:
  • input (Tensor) – входные данные
  • dim (int) – измерение, вдоль которого вычисляется softmax.
  • dtype (torch.dtype, необязательно) – требуемый тип данных возвращаемого тензора. Если указан, перед выполнением операции входной тензор преобразуется к типу dtype. Это полезно для предотвращения переполнения типа данных. По умолчанию: None.
Примеры::
>>> t = torch.ones(2, 2)
>>> torch.special.softmax(t, 0)
tensor([[0.5000, 0.5000],
        [0.5000, 0.5000]])
torch.special.spherical_bessel_j0(input, *, out=None) → Tensor [исходный код]

Сферическая функция Бесселя первого рода порядка 00.

Параметры:

input (Tensor) – входной тензор.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

torch.special.xlog1py(input, other, *, out=None) → Tensor [исходный код]

Вычисляет input * log1p(other) в следующих случаях.

outi={NaNif otheri=NaN0if inputi=0.0 and otheri!=NaNinputi∗log1p(otheri)otherwise\text{out}_{i} = \begin{cases} \text{NaN} & \text{if } \text{other}_{i} = \text{NaN} \\ 0 & \text{if } \text{input}_{i} = 0.0 \text{ and } \text{other}_{i} != \text{NaN} \\ \text{input}_{i} * \text{log1p}(\text{other}_{i})& \text{otherwise} \end{cases}

Аналогично scipy.special.xlog1py в SciPy.

Параметры:
  • input (Number or Tensor) – множитель
  • other (Number or Tensor) – аргумент

Примечание

Как минимум один из аргументов input или other должен быть тензором.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> 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 [исходный код]

Вычисляет input * log(other) в следующих случаях.

outi={NaNif otheri=NaN0if inputi=0.0inputi∗log⁡(otheri)otherwise\text{out}_{i} = \begin{cases} \text{NaN} & \text{if } \text{other}_{i} = \text{NaN} \\ 0 & \text{if } \text{input}_{i} = 0.0 \\ \text{input}_{i} * \log{(\text{other}_{i})} & \text{otherwise} \end{cases}

Аналогично scipy.special.xlogy в SciPy.

Параметры:
  • input (Number or Tensor) – множитель
  • other (Number or Tensor) – аргумент

Примечание

Как минимум один из аргументов input или other должен быть тензором.

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> 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 [исходный код]

Поэлементно вычисляет дзета-функцию Гурвица.

ζ(x,q)=∑k=0∞1(k+q)x\zeta(x, q) = \sum_{k=0}^{\infty} \frac{1}{(k + q)^x}
Параметры:
  • input (Tensor) – входной тензор, соответствующий x.
  • other (Tensor) – входной тензор, соответствующий q.

Примечание

Функция дзета Римана соответствует случаю, когда q = 1

Именованные аргументы:

out (Tensor, необязательный) – выходной тензор.

Пример:

>>> 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])

© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/special.html

Spec-Zone.ru

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