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

PyTorch的Optimizer訓(xùn)練工具的實(shí)現(xiàn)

 更新時(shí)間:2019年08月18日 08:48:14   作者:Steven·簡談  
這篇文章主要介紹了PyTorch的Optimizer訓(xùn)練工具的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

torch.optim 是一個(gè)實(shí)現(xiàn)了各種優(yōu)化算法的庫。大部分常用的方法得到支持,并且接口具備足夠的通用性,使得未來能夠集成更加復(fù)雜的方法。

使用 torch.optim,必須構(gòu)造一個(gè) optimizer 對象。這個(gè)對象能保存當(dāng)前的參數(shù)狀態(tài)并且基于計(jì)算梯度更新參數(shù)。

例如:

optimizer = optim.SGD(model.parameters(), lr = 0.01, momentum=0.9)
optimizer = optim.Adam([var1, var2], lr = 0.0001)

構(gòu)造方法

Optimizer 的 __init__ 函數(shù)接收兩個(gè)參數(shù):第一個(gè)是需要被優(yōu)化的參數(shù),其形式必須是 Tensor 或者 dict;第二個(gè)是優(yōu)化選項(xiàng),包括學(xué)習(xí)率、衰減率等。

被優(yōu)化的參數(shù)一般是 model.parameters(),當(dāng)有特殊需求時(shí)可以手動(dòng)寫一個(gè) dict 來作為輸入。

例如:

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ù)。

梯度控制

在進(jìn)行反向傳播之前,必須要用 zero_grad() 清空梯度。具體的方法是遍歷 self.param_groups 中全部參數(shù),根據(jù) grad 屬性做清除。

例如:

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)
 

調(diào)整學(xué)習(xí)率

lr_scheduler 用于在訓(xùn)練過程中根據(jù)輪次靈活調(diào)控學(xué)習(xí)率。調(diào)整學(xué)習(xí)率的方法有很多種,但是其使用方法是大致相同的:用一個(gè) Schedule 把原始 Optimizer 裝飾上,然后再輸入一些相關(guān)參數(shù),然后用這個(gè) Schedule 做 step()。

比如以 LambdaLR 舉例:

lambda1 = lambda epoch: epoch // 30
lambda2 = lambda epoch: 0.95 ** epoch
scheduler = LambdaLR(optimizer, lr_lambda=[lambda1, lambda2])
for epoch in range(100):
 train(...)
 validate(...)
 scheduler.step()

上面用了兩種優(yōu)化器

優(yōu)化方法

optim 庫中實(shí)現(xiàn)的算法包括 Adadelta、Adagrad、Adam、基于離散張量的 Adam、基于 ∞ \infty∞ 范式的 Adam(Adamax)、Averaged SGD、L-BFGS、RMSProp、resilient BP、基于 Nesterov 的 SGD 算法。

以 SGD 舉例:

optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9)
optimizer.zero_grad()
loss_fn(model(input), target).backward()
optimizer.step()
 

其它方法的使用也一樣:

opt_Adam = torch.optim.Adam(net_Adam.parameters(), lr=0.1, betas=(0.9, 0.99)
opt_RMSprop = torch.optim.RMSprop(net_RMSprop.parameters(), lr=0.1, alpha=0.9)
...
...

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 通過python 執(zhí)行 nohup 不生效的解決

    通過python 執(zhí)行 nohup 不生效的解決

    這篇文章主要介紹了通過python 執(zhí)行 nohup 不生效的解決,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python+tkinter實(shí)現(xiàn)一個(gè)簡單的秒鐘

    python+tkinter實(shí)現(xiàn)一個(gè)簡單的秒鐘

    這篇文章主要為大家詳細(xì)介紹了Python如何利用tkinter實(shí)現(xiàn)一個(gè)簡單的秒鐘,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以自己動(dòng)手嘗試一下
    2024-02-02
  • 手把手教你安裝Windows版本的Tensorflow

    手把手教你安裝Windows版本的Tensorflow

    這篇文章主要介紹了手把手教你安裝Windows版本的Tensorflow,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 關(guān)于windos10環(huán)境下編譯python3版pjsua庫的問題

    關(guān)于windos10環(huán)境下編譯python3版pjsua庫的問題

    pjsua默認(rèn)綁定的python版本是python 2.4,使用起來有諸多限制,希望可以使用python3調(diào)用pjsua的庫實(shí)現(xiàn)軟電話的基礎(chǔ)功能。這篇文章主要介紹了windos10環(huán)境下編譯python3版pjsua庫,需要的朋友可以參考下
    2021-10-10
  • python 實(shí)現(xiàn)分組求和與分組累加求和代碼

    python 實(shí)現(xiàn)分組求和與分組累加求和代碼

    這篇文章主要介紹了python 實(shí)現(xiàn)分組求和與分組累加求和代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python中的對象,方法,類,實(shí)例,函數(shù)用法分析

    Python中的對象,方法,類,實(shí)例,函數(shù)用法分析

    這篇文章主要介紹了Python中的對象,方法,類,實(shí)例,函數(shù)用法,從面向?qū)ο蟮慕嵌确治隽藢ο?方法,類,實(shí)例,函數(shù)等的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • Python進(jìn)程Multiprocessing模塊原理解析

    Python進(jìn)程Multiprocessing模塊原理解析

    這篇文章主要介紹了Python進(jìn)程Multiprocessing模塊原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 詳解Python中數(shù)據(jù)處理的方法總結(jié)及實(shí)現(xiàn)

    詳解Python中數(shù)據(jù)處理的方法總結(jié)及實(shí)現(xiàn)

    數(shù)據(jù)增強(qiáng)作為前處理的關(guān)鍵步驟,在整個(gè)計(jì)算機(jī)視覺中有著具足輕重的地位。本文為大家總結(jié)了Python中數(shù)據(jù)處理的方法及實(shí)現(xiàn),需要的可以參考一下
    2022-09-09
  • 計(jì)算Python Numpy向量之間的歐氏距離實(shí)例

    計(jì)算Python Numpy向量之間的歐氏距離實(shí)例

    這篇文章主要介紹了計(jì)算Python Numpy向量之間的歐氏距離實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • flask SQLAlchemy連接數(shù)據(jù)庫及操作的實(shí)現(xiàn)

    flask SQLAlchemy連接數(shù)據(jù)庫及操作的實(shí)現(xiàn)

    本文主要介紹了flask SQLAlchemy連接數(shù)據(jù)庫及操作的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03

最新評論

垦利县| 宁德市| 利辛县| 南宫市| 澄迈县| 四子王旗| 贵定县| 台山市| 鹤壁市| 肥东县| 平舆县| 楚雄市| 宣化县| 始兴县| 广汉市| 赤城县| 邹城市| 和龙市| 兰西县| 重庆市| 陇西县| 宣城市| 马尔康县| 聊城市| 威海市| 津南区| 略阳县| 茶陵县| 漠河县| 绥宁县| 长顺县| 永新县| 炎陵县| 陆河县| 汉中市| 洞头县| 吉木萨尔县| 浑源县| 社会| 澳门| 惠水县|