評價此頁

torch.nn.functional.affine_grid#

torch.nn.functional.affine_grid(theta, size, align_corners=None)[原始碼]#

給定一批仿射矩陣 theta,生成 2D 或 3D 流場(取樣網格)。

注意

此函式通常與 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)

返回型別

output (Tensor)

警告

align_corners = True 時,網格位置取決於相對於輸入影像大小的畫素大小,因此由 grid_sample() 取樣的位置對於給定不同解析度(即經過上取樣或下采樣後)的相同輸入將會不同。直到 1.2.0 版本,預設行為是 align_corners = True。此後,為了與 interpolate() 的預設行為保持一致,已將預設行為更改為 align_corners = False

警告

align_corners = True 時,1D 資料上的 2D 仿射變換和 2D 資料上的 3D 仿射變換(即當一個空間維度大小為 1 時)是不明確的,並且不是預期用途。當 align_corners = False 時,這不是問題。直到 1.2.0 版本,沿單位維度的所有網格點都被任意視為 -1。從 1.3.0 版本開始,在 align_corners = True 下,沿單位維度的所有網格點都被視為 0(輸入影像的中心)。