如何理解pytorch中的“with torch.no_grad()”?

torch.no_grad()方法就像一个循环,其中循环中的每个张量都将requires_grad设置为False。这意味着,当前与当前计算图相连的具有梯度的张量现在与当前图分离了我们将不再能够计算关于该张量的梯度。直到张量在循环内,它才与当前图分离。一旦用梯度定义的张量脱离了循环,它就会再次附着到当前图上。此方法禁用梯度计算,从而减少计算的内存消耗。

**示例:**在这个例子中,我们将用requires_grad=true定义一个张量a,然后我们将使用张量a在torch.no_grad()中定义一个函数B。现在张量a在循环中,所以requires_grad被设置为false。

复制代码
# Python3
# import necessary libraries 
import torch 
  
# define a tensor 
A = torch.tensor(1., requires_grad=True) 
print("Tensor-A:", A) 
  
# define a function using A tensor  
# inside loop 
with torch.no_grad(): 
    B = A + 1
print("B:-", B) 
  
# check gradient 
print("B.requires_grad=", B.requires_grad)

OUTPUT

复制代码
Tensor-A: tensor(1., requires_grad=True)
B:- tensor(2.)
B.requires_grad= False
相关推荐
AI题库4 分钟前
NLTK自然语言处理实战:2.4 停用词与文本清理
人工智能·自然语言处理
Coder个人博客7 分钟前
Llama.cpp Tools 实用工具深度分析
人工智能·自动驾驶·llama
FreeBuf_8 分钟前
“前缀替换“攻击引发恐慌:高度仿真的“Jackson“冒牌库入侵Maven中央仓库
java·python·maven
Coder个人博客11 分钟前
Llama.cpp Examples 示例程序深度分析
人工智能·自动驾驶·llama
Kyln.Wu12 分钟前
【python实用小脚本-292】[HR揭秘]手工党点名10分钟的终结者|Python版Zoom自动签到+名单导出加速器(建议收藏)
开发语言·python·swift
Nobuggggg13 分钟前
LabelImg使用时报错:TypeError: setValue(self, val: int)
python·scikit-learn
BoBoZz1916 分钟前
MultipleRenderWindows 创建多个渲染窗口
python·vtk·图形渲染·图形处理
新知图书17 分钟前
FastGPT开发一个智能客服案例
人工智能·fastgpt·ai agent·智能体·大模型应用
小毅&Nora20 分钟前
【人工智能】【大模型】 从“读心术“到“智能助手“:大模型架构的演进与革命
人工智能·架构·大模型
俞凡26 分钟前
AI 智能体高可靠设计模式:预生成
人工智能