当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PyTorch meshgrid用法及代码示例


本文简要介绍python语言中 torch.meshgrid 的用法。

用法:

torch.meshgrid(*tensors, indexing=None)

参数

  • tensors(张量列表) -标量或一维张量列表。标量将自动被视为大小为 的张量

  • indexing-

    (str,可选):索引模式,“xy” 或“ij”,默认为“ij”。请参阅警告以了解未来的变化。

    如果选择“xy”,则第一个维度对应于第二个输入的基数,第二个维度对应于第一个输入的基数。

    如果选择“ij”,则维度的顺序与输入的基数相同。

返回

如果输入具有大小为 张量,则输出也将具有 张量,其中每个张量的形状为

返回类型

seq(张量序列)

创建由attr :tensors 中的一维输入指定的坐标网格。

当您想要在某个输入范围内可视化数据时,这很有帮助。请参阅下面的绘图示例。

给定 1D 张量 作为具有相应大小的输入 ,这将创建 N 维张量 ,每个具有形状 ,其中输出 是通过扩展 构造的到结果形状。

注意

0D 输入等同于单个元素的 1D 输入。

警告

torch.meshgrid(*tensors) 当前与调用 numpy.meshgrid(*arrays, indexing=’ij’) 具有相同的行为。

将来 torch.meshgrid 将转换为 indexing=’xy’ 作为默认值。

https://github.com/pytorch/pytorch/issues/50276 tracks this issue with the goal of migrating to NumPy’s behavior.

例子:

>>> 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())
<mpl_toolkits.mplot3d.art3d.Poly3DCollection object at 0x7f8f30d40100>
>>> plt.show()
meshgrid.png

相关用法


注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.meshgrid。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。