一. torch.meshgrid()函数解析
1. 函数说明:
1.1 官网:torch.meshgrid(),函数定义及参数说明如下图所示:
1.2 说明
函数的功能是生成网格,可以用于生成坐标。
1.3 函数输入
输入两个一维tensor数据,且两个tensor数据类型相同
1.4 函数输出
输出两个tensor数据(两个tensor的行数为第一个输入张量的元素个数,列数为第二个输入张量的元素个数)
1.5 注意(参数indexing='‘ij’'时):
- 当两个输入tensor数据类型不同或维度不是一维时会报错。
- 其中第一个输出张量填充第一个输入张量中的元素,各行元素相同;第二个输出张量填充第二个输入张量中的元素,各列元素相同。
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’'。
- 如果选择“ij”,则输出两个tensor维度的行列个数与输入的两个tensor的元素个数分别对应相同,如上面例子所示。
- 如果选择’‘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]])
参考知识文章
网友评论