torch.special
Создано: 04 мар. 2021 | Последнее обновление: 18 июн. 2025
Модуль torch.special, созданный по образцу модуля special библиотеки SciPy.
Функции
-
torch.special.airy_ai(input, *, out=None) → Tensor[исходный код] -
Функция Эйри .
-
torch.special.bessel_j0(input, *, out=None) → Tensor[исходный код] -
Функция Бесселя первого рода нулевого порядка .
-
torch.special.bessel_j1(input, *, out=None) → Tensor[исходный код] -
Функция Бесселя первого рода первого порядка .
-
torch.special.bessel_y0(input, *, out=None) → Tensor[исходный код] -
Функция Бесселя второго рода нулевого порядка .
-
torch.special.bessel_y1(input, *, out=None) → Tensor[исходный код] -
Функция Бесселя второго рода первого порядка .
-
torch.special.chebyshev_polynomial_t(input, n, *, out=None) → Tensor[исходный код] -
Полином Чебышёва первого рода .
Если , возвращается . Если , возвращается . Если или , вычисляется рекуррентное соотношение:
В противном случае вычисляется явная тригонометрическая формула:
.
-
torch.special.chebyshev_polynomial_u(input, n, *, out=None) → Tensor[исходный код] -
Полином Чебышёва второго рода .
Если , возвращается . Если , возвращается . Если или , вычисляется рекуррентное соотношение:
В противном случае вычисляется явная тригонометрическая формула:
.
-
torch.special.chebyshev_polynomial_v(input, n, *, out=None) → Tensor[исходный код] -
Полином Чебышёва третьего рода .
-
torch.special.chebyshev_polynomial_w(input, n, *, out=None) → Tensor[исходный код] -
Полином Чебышёва четвёртого рода .
-
torch.special.digamma(input, *, out=None) → Tensor[исходный код] -
Вычисляет логарифмическую производную гамма-функции для
input.- Параметры:
-
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(определённую ниже).- Параметры:
-
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. Функция ошибок определяется следующим образом:- Параметры:
-
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. Дополнительная функция ошибок определяется следующим образом:- Параметры:
-
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. Масштабированная дополнительная функция ошибок определяется следующим образом:- Параметры:
-
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. Обратная функция ошибок определена на интервале следующим образом:- Параметры:
-
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.- Параметры:
-
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.- Параметры:
-
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.Примечание
Для малых значений 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[исходный код] -
Вычисляет регуляризованную нижнюю неполную гамма-функцию:
где оба значения и неотрицательны, причём хотя бы одно из них строго положительно. Если оба равны нулю или любое из них отрицательно, то . в приведённом выше уравнении — это гамма-функция,
См.
torch.special.gammaincc()иtorch.special.gammaln()— родственные функции.Поддерживает трансляцию к общей форме и значения с плавающей точкой.
Примечание
Обратный проход по
inputпока не поддерживается. Чтобы запросить эту возможность, создайте issue в GitHub PyTorch.- Параметры:
- Именованные аргументы:
-
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[исходный код] -
Вычисляет регуляризованную верхнюю неполную гамма-функцию:
где оба значения и неотрицательны, причём хотя бы одно из них строго положительно. Если оба равны нулю или любое из них отрицательно, то . в приведённом выше уравнении — это гамма-функция,
См.
torch.special.gammainc()иtorch.special.gammaln()— родственные функции.Поддерживает трансляцию к общей форме и значения с плавающей точкой.
Примечание
Обратный проход по
inputпока не поддерживается. Чтобы запросить эту возможность, создайте issue в GitHub PyTorch.- Параметры:
- Именованные аргументы:
-
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.- Параметры:
-
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[исходный код] -
Полином Эрмита для физиков .
Если , возвращается . Если , возвращается . В противном случае вычисляется рекуррентное соотношение:
.
-
torch.special.hermite_polynomial_he(input, n, *, out=None) → Tensor[исходный код] -
Полином Эрмита для теории вероятностей .
Если , возвращается . Если , возвращается . В противном случае вычисляется рекуррентное соотношение:
.
-
torch.special.i0(input, *, out=None) → Tensor[исходный код] -
Вычисляет для каждого элемента
inputмодифицированную функцию Бесселя первого рода нулевого порядка.- Параметры:
-
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модифицированную функцию Бесселя первого рода нулевого порядка с экспоненциальным масштабированием (определённую ниже).- Параметры:
-
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модифицированную функцию Бесселя первого рода первого порядка (определённую ниже).- Параметры:
-
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масштабированную экспонентой модифицированную функцию Бесселя первого рода первого порядка (определённую ниже).- Параметры:
-
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[исходный код] -
Полином Лагерра .
Если , возвращается . Если , возвращается . В противном случае вычисляется рекуррентное соотношение:
.
-
torch.special.legendre_polynomial_p(input, n, *, out=None) → Tensor[исходный код] -
Полином Лежандра .
Если , возвращается . Если , возвращается . В противном случае вычисляется рекуррентное соотношение:
.
-
torch.special.log1p(input, *, out=None) → Tensor[исходный код] -
Псевдоним для
torch.log1p().
-
torch.special.log_ndtr(input, *, out=None) → Tensor[исходный код] -
Поэлементно вычисляет логарифм площади под стандартной функцией плотности вероятности Гаусса, интегрируемой от минус бесконечности до
input.- Параметры:
-
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)), выполнение этих двух операций по отдельности медленнее и численно нестабильно. Эта функция вычисляется следующим образом:
- Параметры:
-
- 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.- Параметры:
- Именованные аргументы:
-
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[исходный код] -
Модифицированная функция Бесселя первого рода порядка .
-
torch.special.modified_bessel_i1(input, *, out=None) → Tensor[исходный код] -
Модифицированная функция Бесселя первого рода порядка .
-
torch.special.modified_bessel_k0(input, *, out=None) → Tensor[исходный код] -
Модифицированная функция Бесселя второго рода порядка .
-
torch.special.modified_bessel_k1(input, *, out=None) → Tensor[исходный код] -
Модифицированная функция Бесселя второго рода порядка .
-
torch.special.multigammaln(input, p, *, out=None) → Tensor[исходный код] -
Поэлементно вычисляет многомерную логарифмическую гамма-функцию размерности , заданную формулой
где , а — гамма-функция.
Все элементы должны быть больше , в противном случае поведение не определено.
- Параметры:
- Именованные аргументы:
-
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.- Параметры:
-
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.Примечание
Также известна как квантильная функция нормального распределения.
- Параметры:
-
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[исходный код] -
Вычисляет -ю производную дигамма-функции на
input. называется порядком полигамма-функции.Примечание
Эта функция реализована только для неотрицательных целых чисел .
- Параметры:
- Именованные аргументы:
-
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[исходный код] -
Масштабированная модифицированная функция Бесселя второго рода порядка .
-
torch.special.scaled_modified_bessel_k1(input, *, out=None) → Tensor[исходный код] -
Масштабированная модифицированная функция Бесселя второго рода порядка .
-
torch.special.shifted_chebyshev_polynomial_t(input, n, *, out=None) → Tensor[исходный код] -
Многочлен Чебышёва первого рода .
-
torch.special.shifted_chebyshev_polynomial_u(input, n, *, out=None) → Tensor[исходный код] -
Многочлен Чебышёва второго рода .
-
torch.special.shifted_chebyshev_polynomial_v(input, n, *, out=None) → Tensor[исходный код] -
Многочлен Чебышёва третьего рода .
-
torch.special.shifted_chebyshev_polynomial_w(input, n, *, out=None) → Tensor[исходный код] -
Многочлен Чебышёва четвёртого рода .
-
torch.special.sinc(input, *, out=None) → Tensor[исходный код] -
Вычисляет нормированную функцию sinc для
input.- Параметры:
-
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 определяется следующим образом:
Она применяется ко всем срезам вдоль 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[исходный код] -
Сферическая функция Бесселя первого рода порядка .
-
torch.special.xlog1py(input, other, *, out=None) → Tensor[исходный код] -
Вычисляет
input * log1p(other)в следующих случаях.Аналогично
scipy.special.xlog1pyв SciPy.Примечание
Как минимум один из аргументов
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)в следующих случаях.Аналогично
scipy.special.xlogyв SciPy.Примечание
Как минимум один из аргументов
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[исходный код] -
Поэлементно вычисляет дзета-функцию Гурвица.
- Параметры:
Примечание
Функция дзета Римана соответствует случаю, когда
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