no_grad¶
- class torch.no_grad(orig_func=None)[來源][來源]¶
停用梯度計算的上下文管理器。
當您確定不會呼叫
Tensor.backward()
時,停用梯度計算對於推論非常有用。 它將減少本來具有 requires_grad=True 的計算的記憶體消耗。在此模式下,每個計算的結果都將具有 requires_grad=False,即使輸入具有 requires_grad=True。 有一個例外! 所有工廠函數,或創建新 Tensor 並採用 requires_grad kwarg 的函數,將不會受到此模式的影響。
此上下文管理器是執行緒本地的; 它不會影響其他執行緒中的計算。
也可以用作裝飾器。
注意
No-grad 只是幾種可以在本機啟用或停用梯度的機制之一,請參閱 在本機停用梯度計算 以獲得有關它們如何比較的更多資訊。
注意
這個 API 不適用於前向模式自動微分 (forward-mode AD)。 如果您想為某個運算禁用前向 AD,您可以解包您的雙重張量(dual tensors)。
- 範例:
>>> x = torch.tensor([1.], requires_grad=True) >>> with torch.no_grad(): ... y = x * 2 >>> y.requires_grad False >>> @torch.no_grad() ... def doubler(x): ... return x * 2 >>> z = doubler(x) >>> z.requires_grad False >>> @torch.no_grad() ... def tripler(x): ... return x * 3 >>> z = tripler(x) >>> z.requires_grad False >>> # factory function exception >>> with torch.no_grad(): ... a = torch.nn.Parameter(torch.rand(10)) >>> a.requires_grad True