快捷键

torch.nn.functional.affine_grid

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

根据一批仿射矩阵生成 2D 或 3D 流场(采样网格) theta

注意

此函数常与 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, optional) – 如果 True ,则将 -11 视为角落像素的中心,而不是图像的角落。有关更完整的描述,请参阅 grid_sample() 。应使用与该选项相同的设置将 affine_grid() 生成的网格传递给 grid_sample() 。默认: False

返回值:

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

返回类型:

输出(张量)

警告

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 贡献者。

使用 Sphinx 构建,并使用 Read the Docs 提供的主题。

文档

PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

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

查看资源