快捷方式

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 的全面開發者文件

檢視文件

教程

獲取面向初學者和高階開發者的深度教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源