当前位置: 首页 > wzjs >正文

深圳网站高端建设百度登录账号首页

深圳网站高端建设,百度登录账号首页,学网站建设的工资高吗,17173网游排行榜方法区别 在 PyTorch 中,disable_torch_init 和 torch.no_grad() 是两种完全不同的机制,它们的作用和目的不同,以下是它们的区别: 1. disable_torch_init 作用:disable_torch_init 通常用于某些特定的框架或库中&am…

方法区别

在 PyTorch 中,disable_torch_inittorch.no_grad() 是两种完全不同的机制,它们的作用和目的不同,以下是它们的区别:

1. disable_torch_init

  • 作用disable_torch_init 通常用于某些特定的框架或库中,目的是禁用 PyTorch 的默认初始化逻辑。例如,在某些情况下,框架可能希望自定义模型参数的初始化方式,而不是使用 PyTorch 默认的初始化方法。
  • 显存优化原理:禁用默认初始化可以减少初始化过程中不必要的显存分配。例如,某些框架可能会在初始化时创建额外的临时张量或执行复杂的初始化逻辑,这些操作可能会占用显存。通过禁用这些默认初始化,可以节省这部分显存。
  • 使用场景:通常用于框架内部的优化,或者在某些特定的模型加载或训练准备阶段。

2. torch.no_grad()

  • 作用torch.no_grad() 上下文管理器或装饰器,用于禁用梯度计算。在 torch.no_grad() 的上下文内,所有张量操作都不会记录梯度信息,也不会构建计算图。
  • 显存优化原理:在默认情况下,PyTorch 会为每个需要梯度的张量(requires_grad=True)保存中间结果,以便在反向传播时计算梯度。这些中间结果会占用显存。通过禁用梯度计算,torch.no_grad() 可以避免这些中间结果的存储,从而显著减少显存占用。
  • 使用场景:主要用于模型的推理(inference)阶段,或者在不需要计算梯度的场景中。例如,在模型评估、数据预处理、特征提取等场景中,torch.no_grad() 是常用的优化手段。

3. 具体区别

特性disable_torch_inittorch.no_grad()
作用范围禁用模型参数的初始化逻辑禁用梯度计算和计算图构建
显存优化原理减少初始化过程中不必要的显存分配避免存储中间梯度和计算图,减少显存占用
使用场景模型加载或训练准备阶段模型推理、评估、数据预处理等
是否影响模型结构可能影响模型参数的初始化方式不影响模型结构,仅影响梯度计算
是否需要手动启用需要框架或用户显式调用可通过上下文管理器或装饰器显式启用

4. 总结

  • disable_torch_init 是一种针对模型初始化过程的优化机制,主要用于减少初始化阶段的显存占用。
  • torch.no_grad() 是一种禁用梯度计算的工具,主要用于推理阶段,通过避免计算图的构建和梯度存储来减少显存占用。

两者虽然都可以减少显存占用,但作用机制和使用场景完全不同。在实际应用中,torch.no_grad() 是更常用且更通用的显存优化手段,而 disable_torch_init 更多是框架内部的优化策略。

(常见)在评估前@torch.no_grad()

源代码:

class no_grad(_DecoratorContextManager):r"""Context-manager that disabled gradient calculation.Disabling gradient calculation is useful for inference, when you are surethat you will not call :meth:`Tensor.backward()`. It will reduce memoryconsumption for computations that would otherwise have `requires_grad=True`.In this mode, the result of every computation will have`requires_grad=False`, even when the inputs have `requires_grad=True`.This context manager is thread local; it will not affect computationin other threads.Also functions as a decorator. (Make sure to instantiate with parenthesis.).. note::No-grad is one of several mechanisms that can enable ordisable gradients locally see :ref:`locally-disable-grad-doc` formore information on how they compare... note::This API does not apply to :ref:`forward-mode AD <forward-mode-ad>`.If you want to disable forward AD for a computation, you can unpackyour dual tensors.Example::>>> # xdoctest: +SKIP>>> x = torch.tensor([1.], requires_grad=True)>>> with torch.no_grad():...     y = x * 2>>> y.requires_gradFalse>>> @torch.no_grad()... def doubler(x):...     return x * 2>>> z = doubler(x)>>> z.requires_gradFalse"""def __init__(self) -> None:if not torch._jit_internal.is_scripting():super().__init__()self.prev = Falsedef __enter__(self) -> None:self.prev = torch.is_grad_enabled()torch.set_grad_enabled(False)def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None:torch.set_grad_enabled(self.prev)

(放在评估函数里面)disable_torch_init()

源代码:

def disable_torch_init():"""Disable the redundant torch default initialization to accelerate model creation."""import torchsetattr(torch.nn.Linear, "reset_parameters", lambda self: None)setattr(torch.nn.LayerNorm, "reset_parameters", lambda self: None)
http://www.dtcms.com/wzjs/212969.html

相关文章:

  • 多个织梦dedecms网站怎么做站群web网址
  • 百度免费做网站吗360优化大师最新版下载
  • 合肥网站建设推荐 晨飞网络什么是网络营销公司
  • 做网站的技术要求高吗百度网
  • 企业网站推广服务协议适合企业员工培训的课程
  • 上海的网站建设公司宁波企业seo外包
  • 网站建设分金手指专业二八视频外链在线生成
  • 安庆市住房和建设厅网站首页上海有实力的seo推广咨询
  • 系统网站建设ppt广州婚恋网站排名
  • 住建房产信息查询网站优化的方法有哪些
  • 怎么做网站不被发现手机百度2020最新版
  • 开平做网站seo首页优化
  • 沈阳做购物网站电话沈阳百度推广哪家好
  • 做网站收费标推广营销软件app
  • 做网站_你的出路在哪里网站大全软件下载
  • idea 做网站登录南阳seo
  • 强大的技术团队网站建设手机网站
  • 申请备案网站空间郑州seo建站
  • 西安最好的室内设计公司合肥网络推广优化公司
  • 携程网的网站推广方式淘宝指数在哪里查询
  • 贵州网站建设设计公司网络推广都是收费
  • 怎么用自己的网站做链轮沧州做网络推广的平台
  • 第一次做怎么放进去视频网站怎么才能在百度上做引流呢
  • 怎样创建网站教程博客是哪个软件
  • 做网站开发工资怎样免费的网络推广平台
  • 外国人爱做视频网站网络推广平台网站推广
  • 大丰企业做网站多少钱广东seo推广公司
  • 网站建设业务员沟通需求seo课程培训视频
  • 重庆模板网站建站淘宝seo搜索优化工具
  • 造价员证在哪个网站上查询营销型网站方案