快捷方式

torch.nn.functional.affine_grid

torch.nn.functional.affine_grid(theta, size, align_corners=None)[source][source]

给定一批仿射矩阵 theta,生成 2D 或 3D 流场(采样网格)。

注意

此函数通常与 grid_sample() 结合使用,以构建 空间变换网络

参数
  • theta (Tensor) – 输入批次的仿射矩阵,形状为 (N×2×3N \times 2 \times 3) 用于 2D 或 (N×3×4N \times 3 \times 4) 用于 3D

  • size (torch.Size) – 目标输出图像大小。 (N×C×H×WN \times C \times H \times W 用于 2D 或 N×C×D×H×WN \times C \times D \times H \times W 用于 3D)示例:torch.Size((32, 3, 24, 24))

  • align_corners (bool, 可选) – 如果 True,则认为 -11 指的是角像素的中心,而不是图像角。有关更完整的描述,请参阅 grid_sample()。由 affine_grid() 生成的网格应传递给 grid_sample(),并使用相同的选项设置。默认值:False

返回

大小为 (N×H×W×2N \times H \times W \times 2) 的输出张量

返回类型

output (Tensor)

警告

align_corners = True 时,网格位置取决于相对于输入图像大小的像素大小,因此对于在不同分辨率下(即,在经过上采样或下采样后)给定的相同输入,grid_sample() 采样的位置将有所不同。在 1.2.0 版本之前的默认行为是 align_corners = True。从那时起,默认行为已更改为 align_corners = False,以便与 interpolate() 的默认行为保持一致。

警告

align_corners = True 时,在 1D 数据上进行 2D 仿射变换以及在 2D 数据上进行 3D 仿射变换(即,当其中一个空间维度具有单位大小时)的定义不明确,并且不是预期的用例。当 align_corners = False 时,这不是问题。在 1.2.0 版本之前,单位维度上的所有网格点都被任意地视为位于 -1。从 1.3.0 版本开始,在 align_corners = True 下,单位维度上的所有网格点都被视为位于 0(输入图像的中心)。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取面向初学者和高级开发者的深度教程

查看教程

资源

查找开发资源并获得问题解答

查看资源