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