网格网格在pytorch/numpy中的应用

网格网格在pytorch/numpy中的应用,numpy,pytorch,tensor,Numpy,Pytorch,Tensor,下面的代码是从中提取的一个片段,我对它试图实现什么感到困惑 grid = np.arange(grid_size) a,b = np.meshgrid(grid, grid) x_offset = torch.FloatTensor(a).view(-1,1) y_offset = torch.FloatTensor(b).view(-1,1) if CUDA: x_offset = x_offset.cuda() y_

下面的代码是从中提取的一个片段,我对它试图实现什么感到困惑

    grid = np.arange(grid_size)
    a,b = np.meshgrid(grid, grid)

    x_offset = torch.FloatTensor(a).view(-1,1)
    y_offset = torch.FloatTensor(b).view(-1,1)

    if CUDA:
        x_offset = x_offset.cuda()
        y_offset = y_offset.cuda()

    x_y_offset = torch.cat((x_offset, y_offset), 1).repeat(1,num_anchors).view(-1,2).unsqueeze(0)
我尝试了grid_size=3时的情况,结果是:

tensor([[0., 1.],
        [2., 0.],
        [1., 2.],
        [0., 1.],
        [2., 0.],
        [0., 0.],
        [1., 1.],
        [1., 2.],
        [2., 2.],
        [0., 1.],
        [2., 0.],
        [1., 2.],
        [0., 1.],
        [2., 0.],
        [0., 0.],
        [1., 1.],
        [1., 2.],
        [2., 2.],
        [0., 1.],
        [2., 0.],
        [1., 2.],
        [0., 1.],
        [2., 0.],
        [0., 0.],
        [1., 1.],
        [1., 2.],
        [2., 2.]])
我不太明白这里的模式是什么。根据给定链接中的描述,我认为我真的应该期望如下内容:

tensor([[0,0],
        [0,0],
        [0,0],
        [0,1],
        [0,1],
        [0,1],
        [0,2],
        [0,2],
        ...]])

如果您希望显示第二个输出,只需更改

x_y_offset = (
    torch.cat((x_offset, y_offset), 1).repeat(1, num_anchors).view(-1, 2).unsqueeze(0)
)


它只是与meshgrid输出的顺序有关。

如果您希望显示第二个输出,只需更改即可

x_y_offset = (
    torch.cat((x_offset, y_offset), 1).repeat(1, num_anchors).view(-1, 2).unsqueeze(0)
)


它只是与meshgrid输出的顺序有关。

您不能一步一步地运行它并检查结果吗。如果我安装了
火炬
,我会这么做。我试着猜出等效的
numpy
步骤,但还是放弃了
a
b
非常明显。我认为numpy和torch中的操作都是一样的,所以使用numpy还是torch并不重要。我确实一步一步地运行它,但是结果不符合我的预期。你不能一步一步地运行它并检查结果吗。如果我安装了
火炬
,我会这么做。我试着猜出等效的
numpy
步骤,但还是放弃了
a
b
非常明显。我认为numpy和torch中的操作都是一样的,所以使用numpy还是torch并不重要。我确实一步一步地运行它,但结果与我的预期不符。