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

珠宝网站建设平台分析报告国外10条新闻简短

珠宝网站建设平台分析报告,国外10条新闻简短,网站停留时间 从哪里获取,asp网站开发框架方法区别 在 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/795339.html

相关文章:

  • 国外家装设计网站百度seo排名软件
  • 免费网站制作网站源码网站开发和设计人员的岗位要求
  • 怀化公积金网站多语言网站源码
  • 空气净化器用什么网站做外贸深圳网站设计公司电
  • 网站建设的规模与类别上海画册设计
  • 最好网站建设公司制作平台广州商城网站建设地址
  • 郑州做网站要多少钱陕西建设厅执业注册中心网站
  • wordpress菜单选项平板电视seo优化关键词
  • 找网络公司做网站流程上饶做网站最好的公司
  • 负责公司网站的更新和维护wordpress后台左侧菜单显示
  • 晋城网站建设价格广州天河区网站建设
  • 太原php网站开发网站开发合同缺陷
  • 网站搭建修改收费依据百度快照推广
  • 专业的制作网站开发公司龙岗外贸网站建设公司
  • 深圳建设网站排名展示型的网站开发价格
  • 做网站一排文字怎么水平对齐大连地图
  • 怎样做淘宝的导购网站推广网站制作推广方案
  • 北京网站如何制作网站被k查询
  • 广州建站优化公司在家做兼职官方网站平台
  • 聂教练做0网站个人免费发布房源信息
  • html5网站搭建oa系统公司排名
  • h5制作企业网站有哪些优势邢台123最新招聘信息
  • 蚌埠百度做网站wps可以做网站吗
  • 做相框的网站网页视频下载快捷指令库
  • 免费推广网站短视频个人简历word文档模板
  • 做策划的人经常浏览的网站做直播网站要多少钱
  • 建站模板哪个好个人网站和企业网站
  • 网业制作与网站建设七冶建设集团网站
  • nike网站建设分析WordPress数据库禁用插件
  • 购物网站做兼职电商网站设计与开发