Shortcuts

torch.nn.functional.affine_grid

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

生成二维或三维流场(采样网格),给定一批仿射矩阵 theta

注意

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

Parameters
  • 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 (布尔值, 可选) – 如果 True,考虑 -11 指的是角像素的中心而不是图像的角。 参考 grid_sample() 以获得更完整的描述。 由 affine_grid() 生成的网格应传递给 grid_sample() 并使用与此选项相同的设置。 默认值: False

Returns

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

Return type

输出 (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(输入图像的中心)。

优云智算