評價此頁

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 (boolfunction) – 要麼是用於啟用或停用推理模式的布林標誌,要麼是要用推理模式啟用的 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
clone()[source]#

建立此類的副本

返回型別

inference_mode