torch.meshgrid
-
torch.meshgrid(*tensors, indexing=None)[исходный код] -
Создаёт сетки координат, заданных одномерными входными данными в
attr:tensors.Это полезно, когда нужно визуализировать данные для некоторого диапазона входных значений. Пример построения графика приведён ниже.
Для входных данных в виде одномерных тензоров с соответствующими размерами создаются N-мерных тензоров , каждый из которых имеет форму , где выходной тензор получается расширением до формы результата.
Примечание
Входные данные размерности 0D обрабатываются так же, как одномерные входные данные из одного элемента.
Предупреждение
torch.meshgrid(*tensors)в настоящее время ведёт себя так же, как вызовnumpy.meshgrid(*arrays, indexing=’ij’).В будущем
torch.meshgridпо умолчанию будет заменён наindexing=’xy’.pytorch/pytorch#50276 посвящён этой проблеме и цели перейти к поведению NumPy.
См. также
torch.cartesian_prod()даёт тот же результат, но собирает данные в тензор векторов.- Параметры:
-
- tensors (list of Tensor) – список скаляров или одномерных тензоров. Скаляры автоматически рассматриваются как тензоры размера
-
indexing (str | None) –
(str, optional): режим индексирования: «xy» или «ij»; по умолчанию — «ij». О возможных изменениях в будущем см. предупреждение.
Если выбрано «xy», первая размерность соответствует размеру второго входного тензора, а вторая размерность — размеру первого входного тензора.
Если выбрано «ij», размерности располагаются в том же порядке, что и размеры входных данных.
- Возвращает:
-
Если на вход подано тензоров размеров , на выходе также будет тензоров, каждый из которых имеет форму .
- Тип возвращаемого значения:
-
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()
© 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