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

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

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

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

使用 torch.optim,必須構(gòu)造一個(gè) optimizer 對(duì)象。這個(gè)對(duì)象能保存當(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 來(lái)作為輸入。

例如:

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

這樣 model.base 或者說(shuō)大部分的參數(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)練過(guò)程中根據(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 庫(kù)中實(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)
...
...

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    這篇文章主要介紹了Python進(jìn)程Multiprocessing模塊原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(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à)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • flask SQLAlchemy連接數(shù)據(jù)庫(kù)及操作的實(shí)現(xiàn)

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

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

最新評(píng)論

陈巴尔虎旗| 佛冈县| 吐鲁番市| 衡阳市| 平塘县| 双城市| 临邑县| 奇台县| 阳春市| 科技| 新密市| 德安县| 天长市| 岱山县| 顺平县| 边坝县| 报价| 城口县| 舟山市| 明水县| 金川县| 广西| 历史| 赣州市| 吴忠市| 江陵县| 固镇县| 临沧市| 鹿泉市| 五寨县| 鄂托克前旗| 台湾省| 昌平区| 左权县| 麦盖提县| 温州市| 灵璧县| 吉水县| 梁平县| 芜湖县| 大埔县|