Spec-Zone.ru › PyTorch 2.14

torch.quantile

torch.quantile(input, q, dim=None, keepdim=False, *, interpolation='linear', out=None) → Tensor

Вычисляет квантили порядка q для каждой строки тензора input вдоль измерения dim.

Для вычисления квантиля мы отображаем q из [0, 1] на диапазон индексов [0, n], чтобы найти положение квантиля во входных данных, отсортированных по возрастанию. Если квантиль находится между двумя точками данных a < b с индексами i и j в отсортированном порядке, результат вычисляется согласно заданному методу interpolation следующим образом:

  • linear: a + (b - a) * fraction, где fraction — дробная часть вычисленного индекса квантиля.
  • lower: a.
  • higher: b.
  • nearest: a или b — в зависимости от того, индекс какого из этих значений ближе к вычисленному индексу квантиля (следует поведению torch.round()).
  • midpoint: (a + b) / 2.

Если q — это одномерный тензор, первое измерение выходных данных соответствует квантилям, и его размер равен размеру q; оставшиеся измерения — это результат редукции.

Примечание

По умолчанию dim имеет значение None, поэтому перед вычислением тензор input преобразуется в одномерный.

Параметры:
  • input (Tensor) – входной тензор.
  • q (float or Tensor) – скаляр или одномерный тензор значений в диапазоне [0, 1].
  • dim (int, optional) – измерение, по которому выполняется редукция.
  • keepdim (bool, optional) – нужно ли сохранять dim выходного тензора. Значение по умолчанию: False.
Именованные аргументы:
  • interpolation (str, optional) – метод интерполяции, используемый, когда искомый квантиль находится между двумя точками данных. Допустимые значения: linear, lower, higher, midpoint и nearest. Значение по умолчанию: linear.
  • out (Tensor, optional) – выходной тензор.

Пример:

>>> a = torch.randn(2, 3)
>>> a
tensor([[ 0.0795, -1.2117,  0.9765],
        [ 1.1707,  0.6706,  0.4884]])
>>> q = torch.tensor([0.25, 0.5, 0.75])
>>> torch.quantile(a, q, dim=1, keepdim=True)
tensor([[[-0.5661],
        [ 0.5795]],

        [[ 0.0795],
        [ 0.6706]],

        [[ 0.5280],
        [ 0.9206]]])
>>> torch.quantile(a, q, dim=1, keepdim=True).shape
torch.Size([3, 2, 1])
>>> a = torch.arange(4.)
>>> a
tensor([0., 1., 2., 3.])
>>> torch.quantile(a, 0.6, interpolation='linear')
tensor(1.8000)
>>> torch.quantile(a, 0.6, interpolation='lower')
tensor(1.)
>>> torch.quantile(a, 0.6, interpolation='higher')
tensor(2.)
>>> torch.quantile(a, 0.6, interpolation='midpoint')
tensor(1.5000)
>>> torch.quantile(a, 0.6, interpolation='nearest')
tensor(2.)
>>> torch.quantile(a, 0.4, interpolation='nearest')
tensor(1.)

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

Spec-Zone.ru

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