婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 聊聊pytorch中Optimizer與optimizer.step()的用法

聊聊pytorch中Optimizer與optimizer.step()的用法

熱門標簽:佛山400電話辦理 朝陽手機外呼系統 北京電銷外呼系統加盟 北瀚ai電銷機器人官網手機版 所得系統電梯怎樣主板設置外呼 市場上的電銷機器人 小蘇云呼電話機器人 儋州電話機器人 地圖標注面積

當我們想指定每一層的學習率時:

optim.SGD([
                    {'params': model.base.parameters()},
                    {'params': model.classifier.parameters(), 'lr': 1e-3}
                ], lr=1e-2, momentum=0.9)

這意味著model.base的參數將會使用1e-2的學習率,model.classifier的參數將會使用1e-3的學習率,并且0.9的momentum將會被用于所有的參數。

進行單次優化

所有的optimizer都實現了step()方法,這個方法會更新所有的參數。它能按兩種方式來使用:

optimizer.step()

這是大多數optimizer所支持的簡化版本。一旦梯度被如backward()之類的函數計算好后,我們就可以調用這個函數。

例子

for input, target in dataset:
        optimizer.zero_grad()
        output = model(input)
        loss = loss_fn(output, target)
        loss.backward()
        optimizer.step()         
optimizer.step(closure)

一些優化算法例如Conjugate Gradient和LBFGS需要重復多次計算函數,因此你需要傳入一個閉包去允許它們重新計算你的模型。這個閉包應當清空梯度,計算損失,然后返回。

例子:

for input, target in dataset:
    def closure():
        optimizer.zero_grad()
        output = model(input)
        loss = loss_fn(output, target)
        loss.backward()
        return loss
    optimizer.step(closure)

補充:Pytorch optimizer.step() 和loss.backward()和scheduler.step()的關系與區別

首先需要明確optimzier優化器的作用, 形象地來說,優化器就是需要根據網絡反向傳播的梯度信息來更新網絡的參數,以起到降低loss函數計算值的作用,這也是機器學習里面最一般的方法論。

從優化器的作用出發,要使得優化器能夠起作用,需要主要兩個東西:

1. 優化器需要知道當前的網絡或者別的什么模型的參數空間

這也就是為什么在訓練文件中,正式開始訓練之前需要將網絡的參數放到優化器里面,比如使用pytorch的話總會出現類似如下的代碼:

optimizer_G = Adam(model_G.parameters(), lr=train_c.lr_G)   # lr 使用的是初始lr
optimizer_D = Adam(model_D.parameters(), lr=train_c.lr_D)

2. 需要知道反向傳播的梯度信息

我們還是從代碼入手,如下所示是Pytorch 中SGD優化算法的step()函數具體寫法,具體SGD的寫法放在參考部分。

def step(self, closure=None):
            """Performs a single optimization step.
            Arguments:
                closure (callable, optional): A closure that reevaluates the model
                    and returns the loss.
            """
            loss = None
            if closure is not None:
                loss = closure()
     
            for group in self.param_groups:
                weight_decay = group['weight_decay']
                momentum = group['momentum']
                dampening = group['dampening']
                nesterov = group['nesterov']
     
                for p in group['params']:
                    if p.grad is None:
                        continue
                    d_p = p.grad.data
                    if weight_decay != 0:
                        d_p.add_(weight_decay, p.data)
                    if momentum != 0:
                        param_state = self.state[p]
                        if 'momentum_buffer' not in param_state:
                            buf = param_state['momentum_buffer'] = d_p.clone()
                        else:
                            buf = param_state['momentum_buffer']
                            buf.mul_(momentum).add_(1 - dampening, d_p)
                        if nesterov:
                            d_p = d_p.add(momentum, buf)
                        else:
                            d_p = buf     
                    p.data.add_(-group['lr'], d_p)     
            return loss

從上面的代碼可以看到step這個函數使用的是參數空間(param_groups)中的grad,也就是當前參數空間對應的梯度,這也就解釋了為什么optimzier使用之前需要zero清零一下,因為如果不清零,那么使用的這個grad就得同上一個mini-batch有關,這不是我們需要的結果。

再回過頭來看,我們知道optimizer更新參數空間需要基于反向梯度,因此,當調用optimizer.step()的時候應當是loss.backward()的時候,這也就是經常會碰到,如下情況

total_loss.backward()
optimizer_G.step()

loss.backward()在前,然后跟一個step。

那么為什么optimizer.step()需要放在每一個batch訓練中,而不是epoch訓練中,這是因為現在的mini-batch訓練模式是假定每一個訓練集就只有mini-batch這樣大,因此實際上可以將每一次mini-batch看做是一次訓練,一次訓練更新一次參數空間,因而optimizer.step()放在這里。

scheduler.step()按照Pytorch的定義是用來更新優化器的學習率的,一般是按照epoch為單位進行更換,即多少個epoch后更換一次學習率,因而scheduler.step()放在epoch這個大循環下。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • pytorch中Schedule與warmup_steps的用法說明
  • Pytorch 中的optimizer使用說明
  • PyTorch中model.zero_grad()和optimizer.zero_grad()用法
  • PyTorch的Optimizer訓練工具的實現

標簽:酒泉 龍巖 江蘇 寧夏 金融催收 云南 商丘 定西

巨人網絡通訊聲明:本文標題《聊聊pytorch中Optimizer與optimizer.step()的用法》,本文關鍵詞  聊聊,pytorch,中,Optimizer,與,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《聊聊pytorch中Optimizer與optimizer.step()的用法》相關的同類信息!
  • 本頁收集關于聊聊pytorch中Optimizer與optimizer.step()的用法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩中文字幕区一区有砖一区 | 91精品国产欧美一区二区成人 | 极品少妇一区二区| 亚洲成人tv网| 天天色 色综合| 丝袜美腿高跟呻吟高潮一区| 亚洲国产日韩一级| 视频一区中文字幕| 免费成人美女在线观看| 日本视频中文字幕一区二区三区| 亚洲bt欧美bt精品| 久久超碰97中文字幕| 国产精品一线二线三线精华| 国产91在线看| 色综合天天视频在线观看| 色哦色哦哦色天天综合| 欧美三级韩国三级日本三斤| 337p亚洲精品色噜噜| 26uuu亚洲综合色| 亚洲国产精品ⅴa在线观看| 国产精品久久久久影院亚瑟| 国产精品国产三级国产三级人妇 | 蜜臀av性久久久久蜜臀aⅴ流畅| 日本视频在线一区| 福利一区在线观看| 欧美无砖砖区免费| 精品99久久久久久| 国产精品久久久久久久久免费桃花 | 久久日韩精品一区二区五区| 久久久久综合网| 亚洲精品免费视频| 国产一区视频网站| 91福利区一区二区三区| 精品成人一区二区| 亚洲黄色小视频| 韩国v欧美v日本v亚洲v| 色爱区综合激月婷婷| 欧美电影免费观看高清完整版在 | 久久精品人人做| 亚洲欧美在线视频| 日本欧美久久久久免费播放网| 国产毛片精品一区| 欧美男生操女生| 中文字幕一区二区三区蜜月| 蜜臀a∨国产成人精品| 色综合久久中文字幕综合网 | 亚洲视频免费在线| 国产一区美女在线| 欧美日韩极品在线观看一区| 国产精品人人做人人爽人人添| 日韩av中文字幕一区二区| 成人av在线资源网站| 日韩精品一区二区在线| 一区二区三区鲁丝不卡| 成人h动漫精品一区二区| 精品国产污污免费网站入口| 亚洲韩国精品一区| 99久久er热在这里只有精品15| 精品国产乱子伦一区| 免费观看在线综合色| 欧美日韩成人综合| 亚洲午夜久久久久中文字幕久| 成人免费视频免费观看| 久久美女艺术照精彩视频福利播放| 亚洲成在线观看| 91久久精品日日躁夜夜躁欧美| 国产偷v国产偷v亚洲高清| 美女视频网站黄色亚洲| 欧美一区二区三区在线观看| 亚洲国产一区二区三区青草影视| 色婷婷亚洲婷婷| 一区二区三区视频在线看| 色综合色狠狠综合色| 亚洲精品高清视频在线观看| 不卡的电视剧免费网站有什么| 久久精品欧美日韩精品| 成人免费看黄yyy456| 国产精品毛片久久久久久| 成人永久aaa| 日韩美女啊v在线免费观看| 91麻豆国产在线观看| 亚洲精品久久久蜜桃| 色先锋aa成人| 丝袜亚洲另类欧美综合| 欧美成人猛片aaaaaaa| 国产精一区二区三区| 国产亚洲精品资源在线26u| 国产麻豆视频精品| 亚洲欧洲在线观看av| 欧美影院一区二区| 偷拍一区二区三区| 精品国产髙清在线看国产毛片| 久久99精品视频| 综合久久久久综合| 欧美日韩成人综合| 经典一区二区三区| 国产精品欧美久久久久无广告| 色8久久人人97超碰香蕉987| 午夜亚洲福利老司机| 精品国产免费久久| 色妹子一区二区| 日韩电影在线一区二区三区| 2019国产精品| 日本精品裸体写真集在线观看| 日韩和欧美一区二区| 日本一区二区三区dvd视频在线 | 奇米影视在线99精品| 欧美极品少妇xxxxⅹ高跟鞋| 91日韩在线专区| 精品中文字幕一区二区| 亚洲精选视频在线| 欧美成人国产一区二区| 99精品国产91久久久久久 | 国产麻豆一精品一av一免费| 中文字幕欧美一区| 欧美成va人片在线观看| 欧美亚州韩日在线看免费版国语版| 蜜臀久久久99精品久久久久久| 国产精品久线在线观看| 日韩免费观看2025年上映的电影| 白白色 亚洲乱淫| 免费黄网站欧美| 性做久久久久久久久| 亚洲色图在线播放| xf在线a精品一区二区视频网站| 色噜噜狠狠一区二区三区果冻| 国产乱码一区二区三区| 五月综合激情日本mⅴ| 欧美国产综合一区二区| 3751色影院一区二区三区| 色综合久久88色综合天天免费| 国内欧美视频一区二区| 男人的天堂久久精品| 亚洲国产日韩a在线播放 | 日韩一级精品视频在线观看| 99精品热视频| 成人动漫一区二区| 成人性色生活片| 国产精品亚洲综合一区在线观看| 视频精品一区二区| 五月天中文字幕一区二区| 亚洲最色的网站| 亚洲伦理在线精品| 一区二区三区中文字幕精品精品| 中文字幕av资源一区| 国产亚洲自拍一区| 国产欧美一区二区三区在线看蜜臀 | 亚洲激情在线激情| 亚洲国产精品精华液2区45| 日韩一区二区免费在线电影| 欧美一区二区三区四区在线观看 | 免费观看91视频大全| 亚洲成a天堂v人片| 亚洲午夜久久久久久久久久久| 亚洲裸体在线观看| 一区二区久久久久| 亚洲电影一区二区三区| 午夜久久电影网| 美女mm1313爽爽久久久蜜臀| 久久成人免费网| 国产成人在线视频免费播放| 大尺度一区二区| jlzzjlzz亚洲女人18| 一本久久a久久免费精品不卡| 91电影在线观看| 欧美一区二区三级| 国产亚洲一区字幕| 亚洲欧美日韩国产综合| 香蕉成人伊视频在线观看| 激情成人综合网| 成人精品一区二区三区四区| 色婷婷久久久亚洲一区二区三区| 在线国产电影不卡| 日韩一区和二区| 国产精品短视频| 午夜精品久久久久久久久久| 久久91精品国产91久久小草| av高清不卡在线| 欧美日韩国产在线观看| 久久人人爽人人爽| 一区二区三区在线观看网站| 免费成人性网站| 色婷婷av久久久久久久| 日韩三级免费观看| 中文字幕一区av| 久久成人久久爱| 欧美视频一区二区三区在线观看 | 欧美性xxxxxx少妇| 精品国内二区三区| 亚洲永久精品国产| 国产精品伊人色| 91麻豆精品国产| 亚洲精品免费在线| 国产成人免费在线观看| 欧美高清视频一二三区| 国产精品视频看| 久久99国产精品成人| 欧美日韩精品高清| 亚洲三级小视频| 成人在线综合网站|