【科研小小白的神经网络Day4】with torch.no_grad():函数的理解,

一、with关键字:

内含上下文文管理器这一概念,有了上下文管理器,with语句才能工作 上下文表达式:With 关键字之后的表达式,该表达式要返回一个上下文管理器对象
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
疑问:运行时上下文和语句体是一个东西嘛?
运行流程:
在这里插入图片描述

一、torch.no_grad函数:

requires_grad属性

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

疑问:1.什么是反向传播
2.为什么突然要自动求导?
3.true和false是用于什么?

当requires_grad设置为False时,反向传播时就不会自动求导了,因此大大节约了显存或者说内存。

with torch.no_grad的作用
在该模块下,所有计算得出的tensor的requires_grad都自动设置为False。

不使用with torch.no_grad():此时有grad_fn=属性,表示,计算的结果在一计算图当中,可以进行梯度反传等操作。
只是想要网络结果的话就不需要后向传播 ,如果你想通过网络输出的结果去进一步优化网络的话 就需要后向传播了。

以上代码为使用了with torch.no_grad(),开始自己不是很清楚,特问了别人之后才知道,原来是因为验证集的时候,我们只是想看一下训练的效果,并不是想通过验证集来更新网络时,就可以使用with torch.no_grad()。最终,torch.save就是保存的训练集的训练模型。

创建一个Tensor并设置requires_grad=True,requires_grad=True说明该变量需要计算梯度
————————————————
版权声明:本文为CSDN博主「大黑山修道」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sazass/article/details/116668755
————————————————
版权声明:本文为CSDN博主「会编程的漂亮小姐姐」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014229742/article/details/110629886

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值