系列文章目錄
pytorch優(yōu)化器——add_param_group()介紹及示例、Yolov7 優(yōu)化器代碼示例
pytorch學習率設置——optimizer.param_groups、對不同層設置學習率、動態(tài)調(diào)整學習率
PyTorch學習——關(guān)于tensor、Variable、nn.Parameter()、葉子節(jié)點、非葉子節(jié)點、detach()函數(shù)、查看網(wǎng)絡層參數(shù)
PyTorch model 返回函數(shù)總結(jié)——model.state_dict(),model.modules(),model.children(),model.parameters()
PyTorch模型參數(shù)初始化(weights_init)——torch.nn.init、加載預權(quán)重
前言
我的需求:我需要在yolov7中更改其中一層的學習率,但yolov7的學習率是隨著eporch的變化動態(tài)變化的。
1、關(guān)于optimizer.param_groups
“param_groups” 是 Pytorch 中優(yōu)化器 Optimizer 的一個屬性,它是一個列表,其中的每個元素都是一個字典,表示優(yōu)化的參數(shù)組。每個字典都包含了一組參數(shù)的各種信息,如當前的學習率、動量等。這個屬性可以用來獲取優(yōu)化器中當前管理的參數(shù)組的信息,也可以用來修改優(yōu)化器的參數(shù)設置。
param_groups中的一些參數(shù)介紹:
[‘param’,‘lr’,‘momentum’,‘dampening’,‘weight_decay’,‘nesterov’]
params(iterable)—待優(yōu)化參數(shù)w、b 或者定義了參數(shù)組的dict
lr(float,可選)—學習率
momentum(float,可選,默認0)—動量因子
weight_decay(float,可選,默認0)—權(quán)重衰減
dampening (float, 可選) – 動量的抑制因子(默認:0)
nesterov (bool, 可選) – 使用Nesterov動量(默認:False)
2、設置學習率
查看優(yōu)化器完整參數(shù):
print(optimizer.state_dict()["param_groups"])
查看學習率:
print("Lr:{}".format(optimizer.state_dict()['param_groups'][0]['lr']))
以下是我測試的網(wǎng)絡模型:
class resnet18(torch.nn.Module):
def __init__(self):
super(resnet18, self).__init__()
self.block1 = torch.nn.Sequential(
torch.nn.Conv2d(1, 10, 5),
torch.nn.MaxPool2d(2),
torch.nn.ReLU(True),
torch.nn.BatchNorm2d(10),
)
self.block2 = torch.nn.Sequential(
torch.nn.Conv2d(10, 20, 5),
torch.nn.MaxPool2d(2),
torch.nn.ReLU(True),
torch.nn.BatchNorm2d(20),
)
self.fc = torch.nn.Sequential(
torch.nn.Flatten(),
torch.nn.Linear(320, 10)
)
def forward(self, x):
x = self.block1(x)
x = self.block2(x)
x = self.fc(x)
return x
model = resnet18()
設置優(yōu)化器、學習率:文章來源:http://www.zghlxwxcb.cn/news/detail-443785.html
optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.5)
對網(wǎng)絡的不同塊設置學習率:文章來源地址http://www.zghlxwxcb.cn/news/detail-443785.html
optimizer = torch.optim.SGD([
{
"params":model.block1.parameters()},
{
"params":model.block2.parameters(),"lr":0.08},
{
"params":model.fc.parameters(),"lr":0.09},],
lr=0.1, #默認參數(shù)
)
到了這里,關(guān)于pytorch學習率設置——optimizer.param_groups、對不同層設置學習率、動態(tài)調(diào)整學習率。的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!