快捷方式

torch.nn.functional.affine_grid

torch.nn.functional.affine_grid(theta, size, align_corners=None)[源代码]

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

注意

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

参数
  • theta (张量) – 仿射矩阵的输入批次,形状为 (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 (布尔值可选) – 如果为 True,则将 -11 视为角像素的中心,而不是图像的角。有关更完整的说明,请参阅 grid_sample() 。由 affine_grid() 生成的网格应以相同设置传递到 grid_sample() 。默认值:False

返回值

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

返回类型

输出 (Tensor)

警告

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

警告

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

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取针对初学者和高级开发人员的深入教程

查看教程

资源

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

查看资源