Pytorch中torch.meshgrid()函数解析

一. torch.meshgrid()函数解析

1. 函数说明:

1.1 官网:torch.meshgrid(),函数定义及参数说明如下图所示:


1.2 说明

函数的功能是生成网格,可以用于生成坐标。

1.3 函数输入

输入两个一维tensor数据,且两个tensor数据类型相同

1.4 函数输出

输出两个tensor数据(两个tensor的行数为第一个输入张量的元素个数,列数为第二个输入张量的元素个数)

1.5 注意(参数indexing='‘ij’'时):

  1. 当两个输入tensor数据类型不同或维度不是一维时会报错。
  2. 其中第一个输出张量填充第一个输入张量中的元素,各行元素相同;第二个输出张量填充第二个输入张量中的元素,各列元素相同。

1.6 输出结果简单记法:

输入两个一维张量的元素个数为n1,n2,则输出两个张量是二维的,且行和列个数均为n1,n2,输出第一个张量行相同(对应第一个输入张量),输出第二个张量列相同(对应第二个输入张量)

2. 代码举例

x = torch.tensor([1, 2, 3])
y = torch.tensor([4, 5])
grid_x, grid_y = torch.meshgrid(x, y, indexing='ij')
print(x)
print(y)
print(grid_x)
print(grid_y)

结果如下:
tensor([1, 2, 3])
tensor([4, 5])
tensor([[1, 1],
        [2, 2],
        [3, 3]])
tensor([[4, 5],
        [4, 5],
        [4, 5]])

注意:参数indexing是可选的,可选值为’‘xy’‘或’‘ij’‘,默认为’‘ij’'。

  1. 如果选择“ij”,则输出两个tensor维度的行列个数与输入的两个tensor的元素个数分别对应相同,如上面例子所示。
  2. 如果选择’‘xy’',则输出两个tensor的第一个维度对应于第二个输入的元素个数,第二个维度对应于第一个输入的元素个数。其中第一个输出张量填充第一个输入张量中的元素,各列元素相同;第二个输出张量填充第二个输入张量中的元素,各行元素相同,与indexing='‘ij’'输出结果情况相反,如下面例子所示。
x = torch.tensor([1, 2, 3])
y = torch.tensor([4, 5])
grid_x, grid_y = torch.meshgrid(x, y, indexing='xy')
print(x)
print(y)
print(grid_x)
print(grid_y)

结果如下所示:
tensor([1, 2, 3])
tensor([4, 5])
tensor([[1, 2, 3],
        [1, 2, 3]])
tensor([[4, 4, 4],
        [5, 5, 5]])

参考知识文章

你可能感兴趣的:(Pytorch中torch.meshgrid()函数解析)