积跬步至千里 || PyTorch 中的“with torch no_grad” 语句

这篇具有很好参考价值的文章主要介绍了积跬步至千里 || PyTorch 中的“with torch no_grad” 语句。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PyTorch 中的“with torch no_grad” 语句


“with ”torch.no_grad()的使用就像一个循环,其中循环内的每个张量都将requires_grad设置为False。这意味着当前与当前计算图相连的任何具有梯度的张量现在都与当前图分离。我们不再能够计算关于这个张量的梯度。

张量从当前图中分离,直到它在循环内。一旦它离开循环,如果张量是用梯度定义的,它就会再次附加到当前图。

让我们举几个例子来更好地理解它是如何工作的。

示例 1

在这个例子中,我们用requires_grad = true创建了一个张量 x 。接下来,我们定义这个张量 x 的函数 y 并将该函数放入 with循环中。现在 x 在循环内,所以它的requires_grad被设置为False。torch.no_grad()

在循环中,无法计算 y 相对于 x 的梯度。所以,y.requires_grad返回False。

# import torch library
import torch

# define a torch tensor
x = torch.tensor(2., requires_grad = True)
print("x:", x)

# define a function y
with torch.no_grad():
   y = x ** 2
print("y:", y)

# check gradient for Y
print("y.requires_grad:", y.requires_grad)

x: tensor(2., requires_grad=True)
y: tensor(4.)
y.requires_grad: False

示例 2

在这个例子中,我们在循环之外定义了函数z。所以,z.requires_grad返回True。

# import torch library
import torch

# define three tensors
x = torch.tensor(2., requires_grad = False)
w = torch.tensor(3., requires_grad = True)
b = torch.tensor(1., requires_grad = True)

print("x:", x)
print("w:", w)
print("b:", b)

# define a function y
y = w * x + b
print("y:", y)

# define a function z
with torch.no_grad():
   z = w * x + b

print("z:", z)

# check if requires grad is true or not
print("y.requires_grad:", y.requires_grad)
print("z.requires_grad:", z.requires_grad)

x: tensor(2.)
w: tensor(3., requires_grad=True)
b: tensor(1., requires_grad=True)
y: tensor(7., grad_fn=)
z: tensor(7.)
y.requires_grad: True
z.requires_grad: False文章来源地址https://www.toymoban.com/news/detail-506214.html

到了这里,关于积跬步至千里 || PyTorch 中的“with torch no_grad” 语句的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入理解PyTorch中的train()、eval()和no_grad()

    ❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈 (封面图由文心一格生成) 在PyTorch中,train()、eval()和no_grad()是三个非常重

    2023年04月08日
    浏览(36)
  • 【Python】torch.no_grad()函数详解和示例

    torch.no_grad() 是 PyTorch 中的一个上下文管理器,用于在进入该上下文时禁用梯度计算。这在你只关心评估模型,而不是训练模型时非常有用,因为它可以显著减少内存使用并加速计算。 当你在 torch.no_grad() 上下文管理器中执行张量操作时,PyTorch 不会为这些操作计算梯度。这意

    2024年03月12日
    浏览(42)
  • python:torch.no_grad()的作用 + requires_grad,grad_fn,grad的含义及使用

    requires_grad: grad_fn: grad: 说法1: 说法2: 代码: 保证param原地数值改变操作下requires_grad=True不变。 参考资料: requires_grad,grad_fn,grad的含义及使用 测试torch.no_grad()的作用 pytorch中torch.no_grad有什么用? PyTorch 中的“with torch no_grad”有什么作用?

    2024年02月17日
    浏览(34)
  • 积跬步至千里 || PyTorch 中 shape 和 size 属性的区别

    在深度学习中,张量 Tensor 和 向量 array 有相似之处,不同的在于 Tensor 兼具了求导的属性。张量和向量一样,可以表示多维矩阵,也同样都有 shape 和 size 属性。 PyTorch 中 shape 可以计算出各个维数的个数,即表示多维矩阵的形状; PyTorch 中 size() 可通过参数计算出特定维度上的

    2024年02月12日
    浏览(36)
  • 积跬步至千里 || 矩阵可视化

    矩阵可以很方面地展示事物两两之间的关系,这种关系可以通过矩阵可视化的方式进行简单监控。 定义一个通用类 调用类 结果展示 另一种方法

    2024年02月12日
    浏览(27)
  • 积跬步至千里 || 数学基础、算法与编程

    BAP 技能是指基础(Basic)、算法(Algorithm)和编程(Programm)三种基本技能的深度融合。理工科以数学、算法与编程为根基,这三个相辅相成又各有区别。 (1)数学以线性代数为主要研究工具和部分微积分技术为手段,来实现优化的目标。 (2)算法是应用数学和各类数据分析方法的

    2024年02月11日
    浏览(33)
  • 【Pytorch】梯度裁剪——torch.nn.utils.clip_grad_norm_的原理及计算过程

    众所周知,梯度裁剪是为了防止梯度爆炸。在训练FCOS算法时,因为训练过程出现了损失为NaN的情况,在github issue有很多都是这种训练过程出现loss为NaN,作者也提出要调整梯度裁剪的超参数,于是理了理梯度裁剪函数 torch.nn.utils.clip_grad_norm_ 的计算过程,方便调参。 torch.nn.u

    2024年02月12日
    浏览(38)
  • 已安装Pytorch,却提示no moudle named ‘torch’(没有名称为torch的模块)

    Pytorch 安装过很多遍(自己的老电脑,实验室的电脑,实验室换的新电脑,服务器的……)不同的显卡不同的服务器……遇到过很多坑都解决过,本以为 Pytorch 配置环境的坑已经被我踩完了。今天又遇到了这种情况:Pycharm 提示是没有名称为 torch 的模块,当然不能运行也不能

    2024年02月11日
    浏览(31)
  • PyTorch翻译官网教程6-AUTOMATIC DIFFERENTIATION WITH TORCH.AUTOGRAD

    Automatic Differentiation with torch.autograd — PyTorch Tutorials 2.0.1+cu117 documentation 当训练神经网络时,最常用的算法是方向传播算法。在该算法中,根据损失函数与给定参数的梯度来调整模型参数(权重)。 为了计算这些梯度,PyTorch有一个内置的微分引擎,名为torch.autograd。它支持任

    2024年02月16日
    浏览(36)
  • Pytorch出现错误Attribute Error: module ‘torch‘ has no attribute ‘_six‘

    1. 问题描述 :我是在VScode中使用jupyter拓展,远程连接服务器。 2. torch版本 :2.0 3. pytorch版本 : 1.9.1 4. 问题原因 :torch 2.0版本 以后中没有 ‘_six.py’ 文件 5. 如何查看torch中的py文件? 我是用的anaconda,torch中的py文件位置为: 6. 解决办法 (1)我第一开始试着把torch1.9中的’

    2024年02月11日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包