【Pytorch】区分detach()和torch.no_grad()
先上三个例子,可能你就已经懂得了。detach()
和 torch.no_grad()
都可以实现相同的效果,只是前者会麻烦一点,对每一个变量都要加上,而后者就不用管了。
x = torch.tensor(2., requires_grad=True)
y = torch.tensor(3., requires_grad=True)
z = 2 * x * y
print(z.requires_grad) # True
x = torch.tensor(2., requires_grad=True)
y = torch.tensor(3., requires_grad=True)
with torch.no_grad():z = 2 * x * y
print(z.requires_grad) # False
x = torch.tensor(2., requires_grad=True)
y = torch.tensor(3., requires_grad=True)
z = 2 * x * y.detach()
print(z.requires_grad) # True
x = torch.tensor(2., requires_grad=True)
y = torch.tensor(3., requires_grad=True)
z = 2 * x.detach() * y.detach()
print(z.requires_grad) # False
再具体说说他们两者的功能或者效果吧
detach()
会返回一个新的Tensor对象,不会在反向传播中出现,是相当于复制了一个变量,将它原本requires_grad=True
变为了requires_grad=False
torch.no_grad()
通常是在推断(inference)的时候,用来禁止梯度计算,仅进行前向传播。在训练过程中,就像画了个圈,来,在我这个圈里面跑一下,都不需要计算梯度,就正向传播一下。
【Pytorch】区分detach()和torch.no_grad()相关推荐
- 通俗讲解Pytorch梯度的相关问题:计算图、torch.no_grad、zero_grad、detach和backward;Variable、Parameter和torch.tensor
文章目录 with torch.no_grad()和requires_grad backward() Variable,Parameter和torch.tensor() zero_grad() 计算图 ...
- 【深度学习】pytorch自动求导机制的理解 | tensor.backward() 反向传播 | tensor.detach()梯度截断函数 | with torch.no_grad()函数
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.pytorch里自动求导的基础概念 1.1.自动求导 requires_grad=True 1.2.求导 requ ...
- 【pytorch】 grad、grad_fn、requires_grad()、with torch.no_grad() 、net.train()、net.eval():记录一次奇怪的debug经历
刚开始接触pytorch框架时,最让我觉得神奇的就是它居然可以–自 动 求 导 ! 于是我开始尝试理解内部的运行机制,但很快放弃了,直接当成黑盒使用-- 最近又遇到一个奇怪的bug,让我不得不去学一下 ...
- 详解Pytorch中的requires_grad、叶子节点与非叶子节点、with torch.no_grad()、model.eval()、model.train()、BatchNorm层
requires_grad requires_grad意为是否需要计算梯度 使用backward()函数反向传播计算梯度时,并不是计算所有tensor的梯度,只有满足下面条件的tensor的梯度才会被 ...
- pytorch之with torch.no_grad
在使用pytorch时,并不是所有的操作都需要进行计算图的生成(计算过程的构建,以便梯度反向传播等操作).而对于tensor的计算操作,默认是要进行计算图的构建的,在这种情况下,可以使用 with t ...
- 【Pytorch】model.train()和model.eval()用法和区别,以及model.eval()和torch.no_grad()的区别
model.train() 启用 Batch Normalization 和 Dropout 如果模型中有BN层(Batch Normalization)和Dropout,需要在训练时添加model. ...
- pytorch的训练测试流程总结,以及model.evel(), model.train(),torch.no_grad()作用
pytorch的 model.eval()和model.train()作用 pytorch中model.train()和model.eval()的区别主要在于Batch Normalization和D ...
- Pytorch的model.train() model.eval() torch.no_grad() 为什么测试的时候不调用loss.backward()计算梯度还要关闭梯度
使用PyTorch进行训练和测试时一定注意要把实例化的model指定train/eval model.train() 启用 BatchNormalization 和 Dropout 告诉我们的网络,这 ...
- Pytorch:model.train()和model.eval()用法和区别,以及model.eval()和torch.no_grad()的区别
model.train()和model.eval()的区别主要在于Batch Normalization和Dropout两层. model.train() 官方文档 启用 Batch Normaliz ...
最新文章
- Android配置启动界面:Activity基本使用
- 【2012百度之星/资格赛】B:小诺爱USB设备
- Emscripten-mac安装与升级
- gitlab修改配置重启_centos7下gitlab安装说明
- github迁移到gitee相关问题
- Java技术回顾之JNDI--JNDI API
- 【Jmeter篇】Jmeter踩坑记(一)
- 二分答案——进击的奶牛(洛谷 P1824)
- python 反传播_Python:反向传播 (六十八)
- 超详细软件著作权申请——资料篇
- Java用OpenOffice将word转换为PDF并预览
- 【随笔】诺贝尔奖提名探索
- 【代码段】动态生成页面heading
- Jointly Embedding Knowledge Graphs and Logical Rules
- nat流量,业务流量_10种增加在线业务流量的方法
- 618买什么蓝牙耳机最划算?四款高品质蓝牙耳机测评
- android画板案例
- One_hot和Word2Vec两种词向量方法的原理及比较
- NeurIPS 2022 | MoVQ: 基于Modulating Quantized Vectors的高保真图像生成
- 『VQA认知』如何理解Bias?
热门文章
- win10系统localhost拒绝访问的解决方法
- 知道计算机组装,电脑组装不担心被电脑店套路,就要懂得如何查看电脑的硬件配置...
- [Demo示例]爬取豆瓣FM个人收藏歌曲“红心列表”
- 牛客练习赛43 Tachibana Kanade Loves Review C(最小生成树Kruskal)
- 判断平年还是闰年,一个月有多少天,一年的第几天
- 3种方法教你如何做笔记
- 圆满完成深软协与赛宝合办的安全测试技术培训!
- 昂首阔步迈入大数据时代
- [ERP]IQC,IPQC,PQC,FQC,OQC是什么意思?是干什么的?
- 用C#输出99乘法表