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

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

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

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

當(dāng)我們想指定每一層的學(xué)習(xí)率時:

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

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

進行單次優(yōu)化

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

optimizer.step()

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

例子

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

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

例子:

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()的關(guān)系與區(qū)別

首先需要明確optimzier優(yōu)化器的作用, 形象地來說,優(yōu)化器就是需要根據(jù)網(wǎng)絡(luò)反向傳播的梯度信息來更新網(wǎng)絡(luò)的參數(shù),以起到降低loss函數(shù)計算值的作用,這也是機器學(xué)習(xí)里面最一般的方法論。

從優(yōu)化器的作用出發(fā),要使得優(yōu)化器能夠起作用,需要主要兩個東西:

1. 優(yōu)化器需要知道當(dāng)前的網(wǎng)絡(luò)或者別的什么模型的參數(shù)空間

這也就是為什么在訓(xùn)練文件中,正式開始訓(xùn)練之前需要將網(wǎng)絡(luò)的參數(shù)放到優(yōu)化器里面,比如使用pytorch的話總會出現(xiàn)類似如下的代碼:

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優(yōu)化算法的step()函數(shù)具體寫法,具體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這個函數(shù)使用的是參數(shù)空間(param_groups)中的grad,也就是當(dāng)前參數(shù)空間對應(yīng)的梯度,這也就解釋了為什么optimzier使用之前需要zero清零一下,因為如果不清零,那么使用的這個grad就得同上一個mini-batch有關(guān),這不是我們需要的結(jié)果。

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

total_loss.backward()
optimizer_G.step()

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

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

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

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《聊聊pytorch中Optimizer與optimizer.step()的用法》,本文關(guān)鍵詞  聊聊,pytorch,中,Optimizer,與,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《聊聊pytorch中Optimizer與optimizer.step()的用法》相關(guān)的同類信息!
  • 本頁收集關(guān)于聊聊pytorch中Optimizer與optimizer.step()的用法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    香蕉乱码成人久久天堂爱免费| 国产精品嫩草久久久久| 成人免费福利片| 不卡大黄网站免费看| 国产美女在线观看一区| av亚洲产国偷v产偷v自拍| 久久精品欧美一区二区三区麻豆 | 日韩综合小视频| 色嗨嗨av一区二区三区| 99久久久精品| 日本va欧美va瓶| 2014亚洲片线观看视频免费| 欧美精品 国产精品| 国产精品99久久久久久有的能看| 国内精品国产三级国产a久久| 亚洲电影一区二区三区| 久久精品亚洲一区二区三区浴池| 久久综合五月天婷婷伊人| 国产精品久久久久久久午夜片| 日本一区二区成人在线| 91成人免费在线| 色一情一乱一乱一91av| 欧美高清视频在线高清观看mv色露露十八 | 欧美成人video| 午夜视频在线观看一区| 日日摸夜夜添夜夜添亚洲女人| 五月婷婷综合在线| 亚洲成a人v欧美综合天堂| 亚洲桃色在线一区| 国产盗摄视频一区二区三区| 精品卡一卡二卡三卡四在线| 国产精品美女久久久久高潮| 亚洲黄色免费电影| 麻豆久久一区二区| 亚洲国产日韩一区二区| 一区二区在线观看免费| 久久影院视频免费| 久久网这里都是精品| 免费在线成人网| 国产一区不卡在线| 亚洲综合区在线| 亚洲第四色夜色| 中文字幕乱码久久午夜不卡 | 色吧成人激情小说| 久久久久久久久久久久电影| av爱爱亚洲一区| 91啪在线观看| 3d动漫精品啪啪| 国产精一品亚洲二区在线视频| 久久久精品影视| www.欧美色图| 免费观看在线综合| 紧缚捆绑精品一区二区| 国产成a人无v码亚洲福利| 欧美国产一区在线| 欧美最猛黑人xxxxx猛交| 一区二区日韩电影| 日韩视频免费观看高清完整版| 在线成人免费视频| 欧美色老头old∨ideo| 亚洲va欧美va人人爽| 欧美电影一区二区| www.av亚洲| 精品一区二区免费| 91网上在线视频| 91国偷自产一区二区三区成为亚洲经典 | 奇米色一区二区三区四区| 日本一区二区免费在线观看视频| 欧美一区二区精品久久911| 欧美午夜不卡在线观看免费| 色婷婷亚洲婷婷| 91精品在线免费| 日韩三区在线观看| 欧美日韩一区精品| 欧美在线免费视屏| 欧美激情一区不卡| 久久嫩草精品久久久精品一| 午夜精品一区二区三区免费视频 | 激情久久久久久久久久久久久久久久| 成人午夜在线播放| 26uuu亚洲综合色欧美| 麻豆91在线播放免费| 欧美日韩亚洲高清一区二区| 日av在线不卡| 樱花草国产18久久久久| 91精品91久久久中77777| 亚洲制服丝袜在线| av电影一区二区| 欧美激情综合在线| 麻豆91小视频| 在线视频你懂得一区二区三区| 精品国产精品网麻豆系列| 久久99在线观看| 欧美成人福利视频| 国产乱码精品一区二区三区忘忧草 | 日韩高清中文字幕一区| 国产在线精品视频| 久久综合狠狠综合久久综合88 | 久久午夜免费电影| 国产精品综合一区二区| 精品捆绑美女sm三区| 不卡高清视频专区| 亚洲午夜免费电影| 日韩精品最新网址| 成人免费高清在线| 午夜精品爽啪视频| 久久久久久久久久久久久女国产乱 | 国产福利91精品一区| 国产欧美日产一区| 欧美一a一片一级一片| 奇米影视7777精品一区二区| 91九色最新地址| 国产91在线观看丝袜| 午夜激情一区二区| 亚洲精品一区二区三区福利| 色av成人天堂桃色av| 蜜桃精品在线观看| 亚洲男人的天堂在线aⅴ视频| 色婷婷亚洲婷婷| 国产激情一区二区三区| 亚洲一级二级在线| 国产亚洲精品福利| 欧美日韩国产美女| 欧洲精品中文字幕| 成人黄色片在线观看| 久久国产剧场电影| 亚洲乱码精品一二三四区日韩在线 | 国产欧美精品一区二区色综合朱莉| 成人午夜在线播放| 免费日韩伦理电影| 亚洲尤物在线视频观看| 国产精品久久久久9999吃药| 精品久久久久久久久久久久包黑料| 狠狠色丁香九九婷婷综合五月| 午夜伦理一区二区| 日韩激情中文字幕| 天堂蜜桃一区二区三区| 日韩电影在线一区二区| 久久精品国产99国产精品| 国产一区二区电影| 国产福利91精品| 色天天综合久久久久综合片| 99久久精品国产导航| 欧美日韩另类国产亚洲欧美一级| 欧美亚洲动漫制服丝袜| 777久久久精品| 中文字幕欧美三区| 亚洲免费在线视频| 九一九一国产精品| 国产一区二区免费视频| 色悠悠亚洲一区二区| 欧美人与z0zoxxxx视频| 精品国产一区a| 2020国产精品| 亚洲欧美日韩成人高清在线一区| 136国产福利精品导航| 精品一区二区在线免费观看| 免费成人美女在线观看.| 精品系列免费在线观看| 韩国av一区二区| 日本韩国一区二区三区| 欧美日韩在线免费视频| 日本一区二区成人| 老司机午夜精品| 欧美日韩精品是欧美日韩精品| 国产日韩av一区二区| 蓝色福利精品导航| 日本久久一区二区| 久久久99精品免费观看不卡| 亚洲国产一区在线观看| 夫妻av一区二区| 日本一区二区三区高清不卡 | 7777精品伊人久久久大香线蕉经典版下载 | 欧美日韩国产在线观看| 久久久久久久久久久久久久久99| 亚洲精品日韩一| 韩国理伦片一区二区三区在线播放 | 自拍av一区二区三区| 成人少妇影院yyyy| 国产精品毛片无遮挡高清| 成人激情免费视频| 成人欧美一区二区三区1314| 国产黄人亚洲片| 国产亚洲欧美一级| 国产老肥熟一区二区三区| 国产性色一区二区| www.视频一区| 26uuu色噜噜精品一区二区| 国产精品一区二区在线观看不卡 | 免费高清视频精品| 日韩亚洲欧美一区| 高清成人免费视频| 亚洲免费在线视频一区 二区| 在线观看不卡一区| 看电影不卡的网站| 亚洲品质自拍视频网站| 日韩欧美一级在线播放| 成人免费高清在线观看| 日本一区二区高清| 色综合欧美在线视频区|