Spec-Zone.ru › PyTorch 1

torch.meshgrid

torch.meshgrid(*tensors, indexing=None) [source]

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

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

Даны NN 1D тензоров 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 обрабатываются аналогично 1D входам с одним элементом.

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

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

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

https://github.com/pytorch/pytorch/issues/50276 отслеживает эту проблему с целью миграции к поведению NumPy.

См. также

torch.cartesian_prod() имеет тот же эффект, но собирает данные в тензор векторов.

Параметры:
  • tensors (список Tensor) – список скаляров или одномерных тензоров. Скаляры будут автоматически интерпретироваться как тензоры размера (1,)(1,)
  • indexing (Optional[str]) –

    (str, необязательно): режим индексирования, либо “xy”, либо “ij”, по умолчанию “ij”. См. предупреждение о будущих изменениях.

    Если выбран “xy”, первое измерение соответствует мощности второго входа, а второе измерение — мощности первого входа.

    Если выбран “ij”, измерения находятся в том же порядке, что и мощность входов.

Возвращает:

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

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

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

Пример:

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

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

Spec-Zone.ru

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