快捷方式

torch.nn.functional.affine_grid

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

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

注意

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

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

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

  • align_corners (bool, optional) – 如果为 True,则将 -11 视为角像素的中心,而非图像的角点。更完整的描述请参考 grid_sample()。由 affine_grid() 生成的网格应与此选项的相同设置一起传递给 grid_sample()。默认值: False

返回值

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

返回值类型

output (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 处。从 1.3.0 版本开始,在 align_corners = True 的设置下,沿尺寸为 1 的维度上的所有网格点都被视为位于 0 处(即输入图像的中心)。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

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

查看教程

资源

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

查看资源