with torch.no_grad()

翻译自官方说明文档

总的来说就是不再进行梯度的计算,在测试中很有效

说明如下:

禁用梯度计算的上下文管理器。

当您确定不会调用Tensor.backward()时,禁用梯度计算对于推断很有用。 它将减少原本需要require_grad = True的计算的内存消耗。

在这种模式下,即使输入具有require_grad = True,每次计算的结果也将具有require_grad = False。

使用enable_grad上下文管理器时,此模式无效。

该上下文管理器是线程本地的; 它不会影响其他线程中的计算。

还用作装饰器。 (确保实例化带括号。)

>>> 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

你可能感兴趣的:(pytorch)