torch.nn.functional.affine_grid¶
- torch.nn.functional.affine_grid(theta, size, align_corners=None)[源代码]¶
生成二维或三维流场(采样网格),给定一批仿射矩阵
theta。注意
此函数通常与
grid_sample()一起使用,以构建 空间变换网络。- Parameters
theta (Tensor) – 输入的仿射矩阵批次,形状为 () 用于2D或 () 用于3D
size (torch.Size) – 目标输出图像大小。 ( 用于2D或 用于3D) 示例: torch.Size((32, 3, 24, 24))
align_corners (布尔值, 可选) – 如果
True,考虑-1和1指的是角像素的中心而不是图像的角。 参考grid_sample()以获得更完整的描述。 由affine_grid()生成的网格应传递给grid_sample()并使用与此选项相同的设置。 默认值:False
- Returns
输出张量的大小为 ()
- 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(输入图像的中心)。