PyTorch中的学习率衰减及其用法详解
在本文中,我们将介绍PyTorch中的学习率衰减及其用法。我们将使用两个示例来说明如何在PyTorch中使用学习率衰减。
学习率衰减
学习率衰减是一种优化算法,它可以在训练过程中逐渐降低学习率。这有助于模型在训练后期更好地收敛。在PyTorch中,我们可以使用torch.optim.lr_scheduler
模块来实现学习率衰减。
示例1:StepLR
StepLR
是一种学习率衰减策略,它在训练过程中按照一定的步长降低学习率。示例代码如下:
import torch
import torch.nn as nn
import torch.optim as optim
import torch.optim.lr_scheduler as lr_scheduler
# 定义模型
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(2, 1)
def forward(self, x):
x = self.fc1(x)
return x
model = Net()
# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.1)
# 定义学习率衰减策略
scheduler = lr_scheduler.StepLR(optimizer, step_size=30, gamma=0.1)
# 训练模型
for epoch in range(100):
running_loss = 0.0
for i, data in enumerate(train_dataset, 0):
inputs, labels = data
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
running_loss += loss.item()
scheduler.step()
在上述代码中,我们定义了一个简单的全连接神经网络Net
,它含一个输入层和一个输出层。然后,我们创建了一个模型实例model
。我们还定义了损失函数criterion
和优化器optimizer
。然后,我们创建了一个StepLR
学习率衰减策略,并将其应用于优化器optimizer
。在训练模型的过程中,我们使用scheduler.step()
函数来更新学习率。
示例2:CosineAnnealingLR
CosineAnnealingLR
是一种学习率衰减策略,它在训练过程中按照余弦函数的形式降低学习率。示例代码如下:
import torch
import torch.nn as nn
import torch.optim as optim
import torch.optim.lr_scheduler as lr_scheduler
# 定义模型
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(2, 1)
def forward(self, x):
x = self.fc1(x)
return x
model = Net()
# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.1)
# 定义学习率衰减策略
scheduler = lr_scheduler.CosineAnnealingLR(optimizer, T_max=100)
# 训练模型
for epoch in range(100):
running_loss = 0.0
for i, data in enumerate(train_dataset, 0):
inputs, labels = data
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
running_loss += loss.item()
scheduler.step()
在上述代码中,我们定义了一个简单的全连接神经网络Net
,它含一个输入层和一个输出层。然后,我们创建了一个模型实例model
。我们还定义了损失函数criterion
和优化器optimizer
。然后,我们创建了一个CosineAnnealingLR
学习率衰减策略,并将其应用于优化器optimizer
。在训练模型的过程中,我们使用scheduler.step()
函数来更新学习率。
结论
在本文中,我们介绍了PyTorch中的学习率衰减及其用法。我们使用了两个示例来说明如何在PyTorch中使用学习率衰减。我们还介绍了StepLR
和CosineAnnealingLR
两种学习率衰减策略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pytorch中的学习率衰减及其用法详解 - Python技术站