最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytorch中Schedule與warmup_steps的用法說明

 更新時間:2021年05月24日 10:33:29   作者:Bingoyear  
這篇文章主要介紹了pytorch中Schedule與warmup_steps的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

1. lr_scheduler相關(guān)

lr_scheduler = WarmupLinearSchedule(optimizer, warmup_steps=args.warmup_steps, t_total=num_train_optimization_steps)

其中args.warmup_steps可以認為是耐心系數(shù)

num_train_optimization_steps為模型參數(shù)的總更新次數(shù)

一般來說:

num_train_optimization_steps = int(total_train_examples / args.train_batch_size / args.gradient_accumulation_steps)

Schedule用來調(diào)節(jié)學習率,拿線性變換調(diào)整來說,下面代碼中,step是當前迭代次數(shù)。

    def lr_lambda(self, step):
        # 線性變換,返回的是某個數(shù)值x,然后返回到類LambdaLR中,最終返回old_lr*x
        if step < self.warmup_steps: # 增大學習率
            return float(step) / float(max(1, self.warmup_steps))
        # 減小學習率
        return max(0.0, float(self.t_total - step) / float(max(1.0, self.t_total - self.warmup_steps)))

在實際運行中,lr_scheduler.step()先將lr初始化為0. 在第一次參數(shù)更新時,此時step=1,lr由0變?yōu)槌跏贾礽nitial_lr;在第二次更新時,step=2,上面代碼中生成某個實數(shù)alpha,新的lr=initial_lr *alpha;在第三次更新時,新的lr是在initial_lr基礎(chǔ)上生成,即新的lr=initial_lr *alpha。

其中warmup_steps可以認為是lr調(diào)整的耐心系數(shù)。

由于有warmup_steps存在,lr先慢慢增加,超過warmup_steps時,lr再慢慢減小。

在實際中,由于訓練剛開始時,訓練數(shù)據(jù)計算出的grad可能與期望方向相反,所以此時采用較小的lr,隨著迭代次數(shù)增加,lr線性增大,增長率為1/warmup_steps;迭代次數(shù)等于warmup_steps時,學習率為初始設(shè)定的學習率;迭代次數(shù)超過warmup_steps時,學習率逐步衰減,衰減率為1/(total-warmup_steps),再進行微調(diào)。

2. gradient_accumulation_steps相關(guān)

gradient_accumulation_steps通過累計梯度來解決本地顯存不足問題。

假設(shè)原來的batch_size=6,樣本總量為24,gradient_accumulation_steps=2

那么參數(shù)更新次數(shù)=24/6=4

現(xiàn)在,減小batch_size=6/2=3,參數(shù)更新次數(shù)不變=24/3/2=4

在梯度反傳時,每gradient_accumulation_steps次進行一次梯度更新,之前照常利用loss.backward()計算梯度。

補充:pytorch學習筆記 -optimizer.step()和scheduler.step()

optimizer.step()和scheduler.step()的區(qū)別

optimizer.step()通常用在每個mini-batch之中,而scheduler.step()通常用在epoch里面,但是不絕對,可以根據(jù)具體的需求來做。只有用了optimizer.step(),模型才會更新,而scheduler.step()是對lr進行調(diào)整。

通常我們有

optimizer = optim.SGD(model.parameters(), lr = 0.01, momentum = 0.9)
scheduler = lr_scheduler.StepLR(optimizer, step_size = 100, gamma = 0.1)
model = net.train(model, loss_function, optimizer, scheduler, num_epochs = 100)

在scheduler的step_size表示scheduler.step()每調(diào)用step_size次,對應(yīng)的學習率就會按照策略調(diào)整一次。

所以如果scheduler.step()是放在mini-batch里面,那么step_size指的是經(jīng)過這么多次迭代,學習率改變一次。

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

相關(guān)文章

  • python關(guān)于字典及遍歷的常用方法

    python關(guān)于字典及遍歷的常用方法

    這篇文章主要介紹了python關(guān)于字典及遍歷的常用方法,字典的鍵可以是字符串、整數(shù)、元組或字典。字典的值也可以是字符串、整數(shù),文章圍繞主題展開更多詳細的內(nèi)容,需要的小伙伴可以參考一下
    2022-06-06
  • Python模仿POST提交HTTP數(shù)據(jù)及使用Cookie值的方法

    Python模仿POST提交HTTP數(shù)據(jù)及使用Cookie值的方法

    這篇文章主要介紹了Python模仿POST提交HTTP數(shù)據(jù)及使用Cookie值的方法,通過兩種不同的實現(xiàn)方法較為詳細的講述了HTTP數(shù)據(jù)通信及cookie的具體用法,需要的朋友可以參考下
    2014-11-11
  • 詳解python持久化文件讀寫

    詳解python持久化文件讀寫

    這篇文章主要介紹了python持久化文件讀寫,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Python圖像運算之圖像灰度非線性變換詳解

    Python圖像運算之圖像灰度非線性變換詳解

    這篇文章將詳細講解圖像灰度非線性變換。圖像灰度非線性變換主要包括對數(shù)變換、冪次變換、指數(shù)變換、分段函數(shù)變換,通過非線性關(guān)系對圖像進行灰度處理,本文主要講解三種常見類型的灰度非線性變換,感興趣的可以了解一下
    2022-03-03
  • Python3 多線程(連接池)操作MySQL插入數(shù)據(jù)

    Python3 多線程(連接池)操作MySQL插入數(shù)據(jù)

    本文將結(jié)合實例代碼,介紹Python3 多線程(連接池)操作MySQL插入數(shù)據(jù),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Python的多態(tài)性實例分析

    Python的多態(tài)性實例分析

    這篇文章主要介紹了Python的多態(tài)性,以實例形式深入淺出的分析了Python在面向?qū)ο缶幊讨卸鄳B(tài)性的原理與實現(xiàn)方法,需要的朋友可以參考下
    2015-07-07
  • python 實現(xiàn)批量xls文件轉(zhuǎn)csv文件的方法

    python 實現(xiàn)批量xls文件轉(zhuǎn)csv文件的方法

    今天小編就為大家分享一篇python 實現(xiàn)批量xls文件轉(zhuǎn)csv文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python引入導入自定義模塊和外部文件的實例

    python引入導入自定義模塊和外部文件的實例

    下面小編就為大家?guī)硪黄猵ython引入導入自定義模塊和外部文件的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Django使用HttpResponse返回圖片并顯示的方法

    Django使用HttpResponse返回圖片并顯示的方法

    今天小編就為大家分享一篇Django使用HttpResponse返回圖片并顯示的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python批量修改文本文件內(nèi)容的方法

    Python批量修改文本文件內(nèi)容的方法

    這篇文章主要介紹了Python批量修改文本文件內(nèi)容的方法的相關(guān)資料,需要的朋友可以參考下
    2016-04-04

最新評論

霍林郭勒市| 宜都市| 涿州市| 镇巴县| 顺义区| 潞城市| 泰来县| 秀山| 恩平市| 泸水县| 沙坪坝区| 广昌县| 三原县| 安乡县| 通辽市| 肃北| 东台市| 腾冲县| 乌兰县| 新田县| 台东市| 四平市| 安庆市| 古浪县| 昌图县| 广灵县| 乌兰浩特市| 吉林省| 灵川县| 临夏县| 双柏县| 祥云县| 陇南市| 平邑县| 景泰县| 汾阳市| 余干县| 南城县| 万州区| 贡嘎县| 防城港市|