NativeScaler()与loss_scaler

NativeScaler()与loss_scaler源码:classNativeScaler:state_dict_key=”amp_scaler”def__init__(self):self._scaler=torch.cuda.amp.GradScaler()def__call__(self,loss,optimizer,clip_grad=None,clip_mode=’norm’,parameters=None,create_graph=False):

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

源码:

class NativeScaler:
    state_dict_key = "amp_scaler"

    def __init__(self):
        self._scaler = torch.cuda.amp.GradScaler()

    def __call__(self, loss, optimizer, clip_grad=None, clip_mode='norm', parameters=None, create_graph=False):
        self._scaler.scale(loss).backward(create_graph=create_graph)
        if clip_grad is not None:
            assert parameters is not None
            self._scaler.unscale_(optimizer)  # unscale the gradients of optimizer's assigned params in-place
            dispatch_clip_grad(parameters, clip_grad, mode=clip_mode)
        self._scaler.step(optimizer)
        self._scaler.update()

    def state_dict(self):
        return self._scaler.state_dict()

    def load_state_dict(self, state_dict):
        self._scaler.load_state_dict(state_dict)

Jetbrains全家桶1年46,售后保障稳定

loss_scaler 函数,它的作用本质上是 loss.backward(create_graph=create_graph) 和 optimizer.step()。

loss_scaler 继承 NativeScaler 这个类。这个类的实例在调用时需要传入 loss, optimizer, clip_grad, parameters, create_graph 等参数,在 __call__ () 函数的内部实现了 loss.backward(create_graph=create_graph) 功能和 optimizer.step() 功能。

例子使用:

from timm.utils import NativeScaler

loss_scaler = NativeScaler()
loss_scaler(loss_G, optimizer, parameters=model_restoration.parameters())

代码等价: 

loss_G.backward()
optimizer.step()
等价于下面的代码:
loss_scaler(loss_G, optimizer, parameters=model_restoration.parameters())
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215508.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 电子计算机主机房国标,中华人民共和国国家标准电子计算机机房设计规范GB50174-93…[通俗易懂]

    电子计算机主机房国标,中华人民共和国国家标准电子计算机机房设计规范GB50174-93…[通俗易懂]中华人民共和国国家标准电子计算机机房设计规范GB50174-93发布时间:2014年5月28日中华人民共和国国家标准电子计算机机房设计规范GB50174-93DesignCodeforElectronicComputerRo(1993年2月17日国家技术监督局、中华人民共和国建设部联合发布1993年9月1日实施)——————————————————————————–第一章总则第1….

    2022年10月2日
    5
  • 示波器的存储深度[通俗易懂]

    示波器的存储深度[通俗易懂]采集时间窗口=存储深度/采样率安捷伦的9000系列示波器在界面左上角上有显示采样率和存储深度,单位为MSa/s或者GSa/s已经Mpts,Mpts代表存储深度,pts是points的缩写,Mpts是指M个点。在每通道的存储深度为1Mpts的设置下,示波器可以10GSa/s采样率捕获1ms的波形。同一示波器,但每通道的存储深度是100Mpts的设置,那么在采样率相同的条件下可以捕获10ms…

    2022年8月31日
    4
  • centos7放行1521端口

    centos7放行1521端口[root@localhost~]#firewall-cmd–zone=public–add-port=1521/tcp–permanentsuccess[root@localhost~]#firewall-cmd–reloadsuccess转载于:https://www.cnblogs.com/yongestcat/p/115434…

    2022年6月6日
    64
  • 矩阵范数的等价性(原创)[通俗易懂]

    矩阵范数的等价性(原创)[通俗易懂]矩阵范数的等价设F=R”role=”presentation”>F=RF=R\mathbbF=\mathbbR或C,”role=”presentation”>C,C,\mathbbC,对于任意两个Fn×n”role=”presentation”>Fn×nFn×n\mathbbF^{n\timesn}上的范数‖⋅&#x

    2025年11月21日
    4
  • csdn如何转载博客_怎么在csdn上写博客

    csdn如何转载博客_怎么在csdn上写博客后续的文章将自动同步到csdn

    2022年8月7日
    8
  • amazement的用法_release的用法

    amazement的用法_release的用法Mutex中提供了WiteOne,ReleaseMutex两个实例方法~WiteOne的作用是”阻塞当前线程,提供对该线程的原子操作”也就是说当一个线程遇到WiteOne的时候,如果在WiteOne里面没有线程在操作,则此线程进去操作而里面有线程的时候,所有到此的线程均需要排队等候里面的线程执行完毕~而控制这样操作的结束标记就是使用ReleaseMutex方法!就好比WiteO…

    2022年4月19日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号