快捷方式

torch.nn.functional.affine_grid

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

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

注意

此函數常與 grid_sample() 結合使用,以建構 空間轉換網路

參數
  • 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。 從那時起,為了與 interpolate() 的預設行為保持一致,預設行為已更改為 align_corners = False

警告

align_corners = True 時,對 1D 資料進行 2D 仿射變換,以及對 2D 資料進行 3D 仿射變換(也就是,當其中一個空間維度的大小為單位大小時)是不明確的,也不是預期的使用案例。當 align_corners = False 時,這不是問題。在 1.2.0 版本之前,沿著單位維度的所有網格點都被任意地認為是在 -1。從 1.3.0 版本開始,在 align_corners = True 下,沿著單位維度的所有網格點都被認為是在 0(輸入影像的中心)。

文件

存取 PyTorch 的完整開發者文件

檢視文件

教學

取得適合初學者和進階開發者的深入教學

檢視教學

資源

尋找開發資源並獲得問題解答

檢視資源