Spec-Zone.ru › PyTorch 2.14

torch.meshgrid

torch.meshgrid(*tensors, indexing=None) [исходный код]

Создаёт сетки координат, заданных одномерными входными данными в attr:tensors.

Это полезно, когда нужно визуализировать данные для некоторого диапазона входных значений. Пример построения графика приведён ниже.

Для входных данных в виде NN одномерных тензоров T0…TN−1T_0 \ldots T_{N-1} с соответствующими размерами S0…SN−1S_0 \ldots S_{N-1} создаются NN N-мерных тензоров G0…GN−1G_0 \ldots G_{N-1}, каждый из которых имеет форму (S0,...,SN−1)(S_0, ..., S_{N-1}), где выходной тензор GiG_i получается расширением TiT_i до формы результата.

Примечание

Входные данные размерности 0D обрабатываются так же, как одномерные входные данные из одного элемента.

Предупреждение

torch.meshgrid(*tensors) в настоящее время ведёт себя так же, как вызов numpy.meshgrid(*arrays, indexing=’ij’).

В будущем torch.meshgrid по умолчанию будет заменён на indexing=’xy’.

pytorch/pytorch#50276 посвящён этой проблеме и цели перейти к поведению NumPy.

См. также

torch.cartesian_prod() даёт тот же результат, но собирает данные в тензор векторов.

Параметры:
  • tensors (list of Tensor) – список скаляров или одномерных тензоров. Скаляры автоматически рассматриваются как тензоры размера (1,)(1,)
  • indexing (str | None) –

    (str, optional): режим индексирования: «xy» или «ij»; по умолчанию — «ij». О возможных изменениях в будущем см. предупреждение.

    Если выбрано «xy», первая размерность соответствует размеру второго входного тензора, а вторая размерность — размеру первого входного тензора.

    Если выбрано «ij», размерности располагаются в том же порядке, что и размеры входных данных.

Возвращает:

Если на вход подано NN тензоров размеров S0…SN−1‘S_0 \ldots S_{N-1}`, на выходе также будет NN тензоров, каждый из которых имеет форму (S0,...,SN−1)(S_0, ..., S_{N-1}).

Тип возвращаемого значения:

seq (последовательность тензоров)

Пример:

>>> x = torch.tensor([1, 2, 3])
>>> y = torch.tensor([4, 5, 6])

Observe the element-wise pairings across the grid, (1, 4),
(1, 5), ..., (3, 6). This is the same thing as the
cartesian product.
>>> grid_x, grid_y = torch.meshgrid(x, y, indexing='ij')
>>> grid_x
tensor([[1, 1, 1],
        [2, 2, 2],
        [3, 3, 3]])
>>> grid_y
tensor([[4, 5, 6],
        [4, 5, 6],
        [4, 5, 6]])

This correspondence can be seen when these grids are
stacked properly.
>>> torch.equal(torch.cat(tuple(torch.dstack([grid_x, grid_y]))),
...             torch.cartesian_prod(x, y))
True

`torch.meshgrid` is commonly used to produce a grid for
plotting.
>>> import matplotlib.pyplot as plt
>>> xs = torch.linspace(-5, 5, steps=100)
>>> ys = torch.linspace(-5, 5, steps=100)
>>> x, y = torch.meshgrid(xs, ys, indexing='xy')
>>> z = torch.sin(torch.sqrt(x * x + y * y))
>>> ax = plt.axes(projection='3d')
>>> ax.plot_surface(x.numpy(), y.numpy(), z.numpy())
>>> plt.show()
../_images/meshgrid.png

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

Spec-Zone.ru

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