inference_mode#
- class torch.autograd.grad_mode.inference_mode(mode=True)[source]#
啟用或停用推理模式的上下文管理器。
InferenceMode 類似於
no_grad,應該在您確信操作不會與 autograd 互動時使用(例如,在資料載入或模型評估期間)。與no_grad相比,它透過停用檢視跟蹤和版本計數器遞增來移除額外的開銷。它也更具限制性,因為在此模式下建立的張量不能用於 autograd 記錄的計算。此上下文管理器是執行緒本地的;它不會影響其他執行緒中的計算。
也可作為裝飾器使用。
注意
推理模式是可區域性啟用或停用梯度的幾種機制之一。有關比較,請參閱 區域性停用梯度計算。如果難以避免在 autograd 跟蹤區域中使用在推理模式下建立的張量,請考慮基準測試您的程式碼是否使用推理模式,以權衡效能優勢與折衷。您始終可以使用
no_grad代替。注意
與一些區域性啟用或停用梯度的其他機制不同,進入 inference_mode 也會停用 前向模式 AD。
- 引數
mode (bool 或 function) – 要麼是用於啟用或停用推理模式的布林標誌,要麼是要用推理模式啟用的 Python 函式裝飾器。
- 示例:
>>> import torch >>> x = torch.ones(1, 2, 3, requires_grad=True) >>> with torch.inference_mode(): ... y = x * x >>> y.requires_grad False >>> y._version Traceback (most recent call last): File "<stdin>", line 1, in <module> RuntimeError: Inference tensors do not track version counter. >>> @torch.inference_mode() ... def func(x): ... return x * x >>> out = func(x) >>> out.requires_grad False >>> @torch.inference_mode() ... def doubler(x): ... return x * 2 >>> out = doubler(x) >>> out.requires_grad False