torch.nn.functional.affine_grid#
- torch.nn.functional.affine_grid(theta, size, align_corners=None)[原始碼]#
給定一批仿射矩陣
theta,生成 2D 或 3D 流場(取樣網格)。注意
此函式通常與
grid_sample()結合使用來構建 空間變換網路。- 引數
theta (Tensor) – 輸入的仿射矩陣批次,形狀為 () 用於 2D,或 () 用於 3D
size (torch.Size) – 目標輸出影像大小。 () 用於 2D,或 ) 用於 3D) 示例:torch.Size((32, 3, 24, 24))
align_corners (bool, optional) – 如果
True,則將-1和1視為畫素角點的中心而不是影像的角點。有關更完整的描述,請參閱grid_sample()。由affine_grid()生成的網格應以相同的選項設定傳遞給grid_sample()。預設為False
- 返回
輸出 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 仿射變換(即當一個空間維度大小為 1 時)是不明確的,並且不是預期用途。當align_corners = False時,這不是問題。直到 1.2.0 版本,沿單位維度的所有網格點都被任意視為-1。從 1.3.0 版本開始,在align_corners = True下,沿單位維度的所有網格點都被視為0(輸入影像的中心)。