pytorch 使用with torch.no_grad替换volatile

本文介绍了在PyTorch中,由于volatile已被弃用,如何使用with torch.no_grad上下文管理器来避免自动求导,从而节省显存。详细解释了requires_grad的含义以及volatile和with torch.no_grad的区别与用法。
摘要由CSDN通过智能技术生成

今天踩了什么坑

今天看训练的输出结果使发现了一个报错

在这里插入图片描述
百度后发现是新的版本下volatile已经被弃用,并且提示可使用:
with torch.no_grad
代替volatile;

前置知识

requires_grad

在pytorch中,tensor有一个requires_grad参数(默认为False),如果设置为True,则反向传播时,该tensor就会自动求导。tensor的requires_grad的属性默认为False,若一个节点(叶子变量:自己创建的tensor)requires_grad被设置为True,那么所有依赖它的节点requires_grad都为True(即使其他相依赖的tensor的requires_grad = False)

volatile(已弃用)

如果一个tensor的volatile = True,那么所有依赖他的tensor会全部变成True,反向传播时就不会自动求导了,因此大大节约了显存或者说内存。
注:volatile=True的优先级高于requires_grad,即当volatile = True时,无论requires_grad是Ture还是False,反向

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值