日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

PyTorch官方中文文档:torch.optim 优化器参数

發(fā)布時(shí)間:2023/11/28 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PyTorch官方中文文档:torch.optim 优化器参数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
內(nèi)容預(yù)覽:
  • step(closure) 進(jìn)行單次優(yōu)化 (參數(shù)更新). 參數(shù): closure (callable) –...~
  • 參數(shù): params (iterable) – 待優(yōu)化參數(shù)的iterable或者是定義了參數(shù)組的...~
  • 參數(shù): params (iterable) – 待優(yōu)化參數(shù)的iterable或者是定義了參數(shù)組的...~

?

torch.optim

?

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

?

如何使用optimizer

?

為了使用torch.optim,你需要構(gòu)建一個(gè)optimizer對(duì)象。這個(gè)對(duì)象能夠保持當(dāng)前參數(shù)狀態(tài)并基于計(jì)算得到的梯度進(jìn)行參數(shù)更新。

?

構(gòu)建

?

為了構(gòu)建一個(gè)Optimizer,你需要給它一個(gè)包含了需要優(yōu)化的參數(shù)(必須都是Variable對(duì)象)的iterable。然后,你可以設(shè)置optimizer的參
數(shù)選項(xiàng),比如學(xué)習(xí)率,權(quán)重衰減,等等。

?

例子:

?

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

?

為每個(gè)參數(shù)單獨(dú)設(shè)置選項(xiàng)

?

Optimizer也支持為每個(gè)參數(shù)單獨(dú)設(shè)置選項(xiàng)。若想這么做,不要直接傳入Variable的iterable,而是傳入dict的iterable。每一個(gè)dict都分別定
義了一組參數(shù),并且包含一個(gè)param鍵,這個(gè)鍵對(duì)應(yīng)參數(shù)的列表。其他的鍵應(yīng)該optimizer所接受的其他參數(shù)的關(guān)鍵字相匹配,并且會(huì)被用于對(duì)這組參數(shù)的
優(yōu)化。

?

注意:

?

你仍然能夠傳遞選項(xiàng)作為關(guān)鍵字參數(shù)。在未重寫這些選項(xiàng)的組中,它們會(huì)被用作默認(rèn)值。當(dāng)你只想改動(dòng)一個(gè)參數(shù)組的選項(xiàng),但其他參數(shù)組的選項(xiàng)不變時(shí),這是
非常有用的。

?

例如,當(dāng)我們想指定每一層的學(xué)習(xí)率時(shí),這是非常有用的:

?

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

?

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

?

進(jìn)行單次優(yōu)化

?

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

?

optimizer.step()

?

這是大多數(shù)optimizer所支持的簡(jiǎn)化版本。一旦梯度被如backward()之類的函數(shù)計(jì)算好后,我們就可以調(diào)用這個(gè)函數(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ù)多次計(jì)算函數(shù),因此你需要傳入一個(gè)閉包去允許它們重新計(jì)算你的模型。這個(gè)閉包應(yīng)當(dāng)清空梯度,
計(jì)算損失,然后返回。

?

例子:

?

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

?

算法

?

class torch.optim.Optimizer(params, defaults) [source]

?

Base class for all optimizers.

?

參數(shù):

?

    • params (iterable) ——?Variable?或者?dict的iterable。指定了什么參數(shù)應(yīng)當(dāng)被優(yōu)化。

?

    • defaults —— (dict):包含了優(yōu)化選項(xiàng)默認(rèn)值的字典(一個(gè)參數(shù)組沒(méi)有指定的參數(shù)選項(xiàng)將會(huì)使用默認(rèn)值)。

?

?

load_state_dict(state_dict) [source]

?

加載optimizer狀態(tài)

?

參數(shù):

?

state_dict (dict) —— optimizer的狀態(tài)。應(yīng)當(dāng)是一個(gè)調(diào)用state_dict()所返回的對(duì)象。

?

state_dict() [source]

?

dict返回optimizer的狀態(tài)。

?

它包含兩項(xiàng)。

?

    • state – 一個(gè)保存了當(dāng)前優(yōu)化狀態(tài)的dict。optimizer的類別不同,state的內(nèi)容也會(huì)不同。

?

    • param_groups – 一個(gè)包含了全部參數(shù)組的dict。

?

?

step(closure) [source]

?

進(jìn)行單次優(yōu)化 (參數(shù)更新).

?

參數(shù):

?

    • closure (callable) – 一個(gè)重新評(píng)價(jià)模型并返回loss的閉包,對(duì)于大多數(shù)參數(shù)來(lái)說(shuō)是可選的。

?

?

zero_grad() [source]

?

清空所有被優(yōu)化過(guò)的Variable的梯度.

?

class torch.optim.Adadelta(params, lr=1.0, rho=0.9, eps=1e-06, weight_decay=0)[source]

?

實(shí)現(xiàn)Adadelta算法。

?

它在ADADELTA: An Adaptive Learning Rate Method.中被提出。

?

參數(shù):

?

    • params (iterable) – 待優(yōu)化參數(shù)的iterable或者是定義了參數(shù)組的dict

?

    • rho (float, 可選) – 用于計(jì)算平方梯度的運(yùn)行平均值的系數(shù)(默認(rèn):0.9)

?

    • eps (float, 可選) – 為了增加數(shù)值計(jì)算的穩(wěn)定性而加到分母里的項(xiàng)(默認(rèn):1e-6)

?

    • lr (float, 可選) – 在delta被應(yīng)用到參數(shù)更新之前對(duì)它縮放的系數(shù)(默認(rèn):1.0)

?

    • weight_decay (float, 可選) – 權(quán)重衰減(L2懲罰)(默認(rèn): 0)

?

?

step(closure) [source]

?

進(jìn)行單次優(yōu)化 (參數(shù)更新).

?

參數(shù):

?

    • closure (callable) – 一個(gè)重新評(píng)價(jià)模型并返回loss的閉包,對(duì)于大多數(shù)參數(shù)來(lái)說(shuō)是可選的。

?

?

class torch.optim.Adagrad(params, lr=0.01, lr_decay=0, weight_decay=0)[source]

?

實(shí)現(xiàn)Adagrad算法。

?

它在?Adaptive Subgradient Methods for Online Learning and Stochastic Optimization中被提出。

?

參數(shù):

?

    • params (iterable) – 待優(yōu)化參數(shù)的iterable或者是定義了參數(shù)組的dict

?

    • lr (float, 可選) – 學(xué)習(xí)率(默認(rèn): 1e-2)

?

    • lr_decay (float, 可選) – 學(xué)習(xí)率衰減(默認(rèn): 0)

?

    • weight_decay (float, 可選) – 權(quán)重衰減(L2懲罰)(默認(rèn): 0)

?

?

step(closure) [source]

?

進(jìn)行單次優(yōu)化 (參數(shù)更新).

?

參數(shù):

?

    • closure (callable) – 一個(gè)重新評(píng)價(jià)模型并返回loss的閉包,對(duì)于大多數(shù)參數(shù)來(lái)說(shuō)是可選的。

?

?

class torch.optim.Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0)[source]

?

實(shí)現(xiàn)Adam算法。

?

它在Adam: A Method for Stochastic Optimization中被提出。

?

參數(shù):

?

    • params (iterable) – 待優(yōu)化參數(shù)的iterable或者是定義了參數(shù)組的dict

?

    • lr (float, 可選) – 學(xué)習(xí)率(默認(rèn):1e-3)

?

    • betas (Tuple[float,?float], 可選) – 用于計(jì)算梯度以及梯度平方的運(yùn)行平均值的系數(shù)(默認(rèn):0.9,0.999)

?

    • eps (float, 可選) – 為了增加數(shù)值計(jì)算的穩(wěn)定性而加到分母里的項(xiàng)(默認(rèn):1e-8)

?

    • weight_decay (float, 可選) – 權(quán)重衰減(L2懲罰)(默認(rèn): 0)

?

?

step(closure) [source]

?

進(jìn)行單次優(yōu)化 (參數(shù)更新).

?

參數(shù):

?

    • closure (callable) – 一個(gè)重新評(píng)價(jià)模型并返回loss的閉包,對(duì)于大多數(shù)參數(shù)來(lái)說(shuō)是可選的。

?

?

class torch.optim.Adamax(params, lr=0.002, betas=(0.9, 0.999), eps=1e-08, weight_decay=0)[source]

?

實(shí)現(xiàn)Adamax算法(Adam的一種基于無(wú)窮范數(shù)的變種)。

?

它在Adam: A Method for Stochastic Optimization中被提出。

?

參數(shù):

?

    • params (iterable) – 待優(yōu)化參數(shù)的iterable或者是定義了參數(shù)組的dict

?

    • lr (float, 可選) – 學(xué)習(xí)率(默認(rèn):2e-3)

?

    • betas (Tuple[float,?float], 可選) – 用于計(jì)算梯度以及梯度平方的運(yùn)行平均值的系數(shù)

?

    • eps (float, 可選) – 為了增加數(shù)值計(jì)算的穩(wěn)定性而加到分母里的項(xiàng)(默認(rèn):1e-8)

?

    • weight_decay (float, 可選) – 權(quán)重衰減(L2懲罰)(默認(rèn): 0)

?

?

step(closure) [source]

?

進(jìn)行單次優(yōu)化 (參數(shù)更新).

?

參數(shù):

?

    • closure (callable) – 一個(gè)重新評(píng)價(jià)模型并返回loss的閉包,對(duì)于大多數(shù)參數(shù)來(lái)說(shuō)是可選的。

?

?

class torch.optim.ASGD(params, lr=0.01, lambd=0.0001, alpha=0.75, t0=1000000.0, weight_decay=0)[source]

?

實(shí)現(xiàn)平均隨機(jī)梯度下降算法。

?

它在Acceleration of stochastic approximation by averaging中被提出。

?

參數(shù):

?

    • params (iterable) – 待優(yōu)化參數(shù)的iterable或者是定義了參數(shù)組的dict

?

    • lr (float, 可選) – 學(xué)習(xí)率(默認(rèn):1e-2)

?

    • lambd (float, 可選) – 衰減項(xiàng)(默認(rèn):1e-4)

?

    • alpha (float, 可選) – eta更新的指數(shù)(默認(rèn):0.75)

?

    • t0 (float, 可選) – 指明在哪一次開(kāi)始平均化(默認(rèn):1e6)

?

    • weight_decay (float, 可選) – 權(quán)重衰減(L2懲罰)(默認(rèn): 0)

?

?

step(closure) [source]

?

進(jìn)行單次優(yōu)化 (參數(shù)更新).

?

參數(shù):

?

    • closure (callable) – 一個(gè)重新評(píng)價(jià)模型并返回loss的閉包,對(duì)于大多數(shù)參數(shù)來(lái)說(shuō)是可選的。

?

?

class torch.optim.LBFGS(params, lr=1, max_iter=20, max_eval=None, tolerance_grad=1e-05, tolerance_change=1e-09, history_size=100, line_search_fn=None)[source]

?

實(shí)現(xiàn)L-BFGS算法。

?

警告

?

這個(gè)optimizer不支持為每個(gè)參數(shù)單獨(dú)設(shè)置選項(xiàng)以及不支持參數(shù)組(只能有一個(gè))

?

警告

?

目前所有的參數(shù)不得不都在同一設(shè)備上。在將來(lái)這會(huì)得到改進(jìn)。

?

注意

?

這是一個(gè)內(nèi)存高度密集的optimizer(它要求額外的param_bytes * (history_size + 1)?個(gè)字節(jié))。如果它不適應(yīng)內(nèi)存,嘗試減小history size,或者使用不同的算法。

?

參數(shù):

?

    • lr (float) – 學(xué)習(xí)率(默認(rèn):1)

?

    • max_iter (int) – 每一步優(yōu)化的最大迭代次數(shù)(默認(rèn):20))

?

    • max_eval (int) – 每一步優(yōu)化的最大函數(shù)評(píng)價(jià)次數(shù)(默認(rèn):max * 1.25)

?

    • tolerance_grad (float) – 一階最優(yōu)的終止容忍度(默認(rèn):1e-5)

?

    • tolerance_change (float) – 在函數(shù)值/參數(shù)變化量上的終止容忍度(默認(rèn):1e-9)

?

    • history_size (int) – 更新歷史的大小(默認(rèn):100)

?

?

step(closure) [source]

?

進(jìn)行單次優(yōu)化 (參數(shù)更新).

?

參數(shù):

?

    • closure (callable) – 一個(gè)重新評(píng)價(jià)模型并返回loss的閉包,對(duì)于大多數(shù)參數(shù)來(lái)說(shuō)是可選的。

?

?

class torch.optim.RMSprop(params, lr=0.01, alpha=0.99, eps=1e-08, weight_decay=0, momentum=0, centered=False)[source]

?

實(shí)現(xiàn)RMSprop算法。

?

由G. Hinton在他的課程中提出.

?

中心版本首次出現(xiàn)在Generating Sequences With Recurrent Neural Networks.

?

參數(shù):

?

    • params (iterable) – 待優(yōu)化參數(shù)的iterable或者是定義了參數(shù)組的dict

?

    • lr (float, 可選) – 學(xué)習(xí)率(默認(rèn):1e-2)

?

    • momentum (float, 可選) – 動(dòng)量因子(默認(rèn):0)

?

    • alpha (float, 可選) – 平滑常數(shù)(默認(rèn):0.99)

?

    • eps (float, 可選) – 為了增加數(shù)值計(jì)算的穩(wěn)定性而加到分母里的項(xiàng)(默認(rèn):1e-8)

?

    • centered (bool, 可選) – 如果為True,計(jì)算中心化的RMSProp,并且用它的方差預(yù)測(cè)值對(duì)梯度進(jìn)行歸一化

?

    • weight_decay (float, 可選) – 權(quán)重衰減(L2懲罰)(默認(rèn): 0)

?

?

step(closure) [source]

?

進(jìn)行單次優(yōu)化 (參數(shù)更新).

?

參數(shù):

?

    • closure (callable) – 一個(gè)重新評(píng)價(jià)模型并返回loss的閉包,對(duì)于大多數(shù)參數(shù)來(lái)說(shuō)是可選的。

?

?

class torch.optim.Rprop(params, lr=0.01, etas=(0.5, 1.2), step_sizes=(1e-06, 50))[source]

?

實(shí)現(xiàn)彈性反向傳播算法。

?

參數(shù):

?

    • params (iterable) – 待優(yōu)化參數(shù)的iterable或者是定義了參數(shù)組的dict

?

    • lr (float, 可選) – 學(xué)習(xí)率(默認(rèn):1e-2)

?

    • etas (Tuple[float,?float], 可選) – 一對(duì)(etaminus,etaplis), 它們分別是乘法的增加和減小的因子(默認(rèn):0.5,1.2)

?

    • step_sizes (Tuple[float,?float], 可選) – 允許的一對(duì)最小和最大的步長(zhǎng)(默認(rèn):1e-6,50)

?

?

step(closure) [source]

?

進(jìn)行單次優(yōu)化 (參數(shù)更新).

?

參數(shù):

?

    • closure (callable) – 一個(gè)重新評(píng)價(jià)模型并返回loss的閉包,對(duì)于大多數(shù)參數(shù)來(lái)說(shuō)是可選的。

?

?

class torch.optim.SGD(params, lr=, momentum=0, dampening=0, weight_decay=0, nesterov=False)[source]

?

實(shí)現(xiàn)隨機(jī)梯度下降算法(momentum可選)。

?

Nesterov動(dòng)量基于On the importance of initialization and momentum in deep learning中的公式.

?

參數(shù):

?

    • params (iterable) – 待優(yōu)化參數(shù)的iterable或者是定義了參數(shù)組的dict

?

    • lr (float) – 學(xué)習(xí)率

?

    • momentum (float, 可選) – 動(dòng)量因子(默認(rèn):0)

?

    • weight_decay (float, 可選) – 權(quán)重衰減(L2懲罰)(默認(rèn):0)

?

    • dampening (float, 可選) – 動(dòng)量的抑制因子(默認(rèn):0)

?

    • nesterov (bool, 可選) – 使用Nesterov動(dòng)量(默認(rèn):False)

?

?

例子:

?

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

?

Note

?

帶有動(dòng)量/Nesterov的SGD的實(shí)現(xiàn)稍微不同于Sutskever等人以及其他框架中的實(shí)現(xiàn)。

?

考慮動(dòng)量的具體情況,更新可以寫成

?

v=ρ?v+g

?

p=p?lr?v

?

其中,p、g、v和ρ分別是參數(shù)、梯度、速度和動(dòng)量。

?

這跟Sutskever等人以及其他框架的實(shí)現(xiàn)是相反的,它們采用這樣的更新

?

v=ρ?v+lr?g

?

p=p?v

?

Nesterov的版本也類似地被修改了。

?

step(closure) [source]

?

進(jìn)行單次優(yōu)化 (參數(shù)更新).

?

參數(shù):

?

    • closure (callable) – 一個(gè)重新評(píng)價(jià)模型并返回loss的閉包,對(duì)于大多數(shù)參數(shù)來(lái)說(shuō)是可選的。

?

?

艾伯特(http://www.aibbt.com/)國(guó)內(nèi)第一家人工智能門戶

?

?

?

以上就是:PyTorch官方中文文檔:torch.optim?的全部?jī)?nèi)容。

本站部分內(nèi)容來(lái)源于互聯(lián)網(wǎng)和用戶投稿,如有侵權(quán)請(qǐng)聯(lián)系我們刪除,謝謝。
Email:server@01hai.com

?

總結(jié)

以上是生活随笔為你收集整理的PyTorch官方中文文档:torch.optim 优化器参数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。