0


optim.Adam()

torch.optim优化算法理解之optim.Adam()-CSDN博客https://blog.csdn.net/kgzhang/article/details/77479737PyTorch优化算法:torch.optim.Adam 的参数详解和应用-CSDN博客https://blog.csdn.net/weixin_51659315/article/details/135584252

optim.Adam

是 PyTorch 中一种非常流行的优化器,它是 Adam(Adaptive Moment Estimation)优化算法的实现。Adam 优化器结合了动量优化和 RMSProp 的优点,以提高训练深度学习模型的效率和效果。

optim.Adam

的用法

基本语法:

torch.optim.Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, amsgrad=False)

参数说明:

  • params:模型的参数(通常是 model.parameters())。
  • lr:学习率(learning rate),默认值为 0.001。
  • betas:用于计算梯度和梯度平方的指数加权平均的系数,默认值为 (0.9, 0.999)。
  • eps:防止除以零的数值稳定常数,默认值为 1e-08。
  • weight_decay:权重衰减(L2 正则化),默认值为 0。
  • amsgrad:是否使用 AMSGrad 修正(一个改进版本的 Adam),默认值为 False。

示例代码

import torch
import torch.nn as nn
import torch.optim as optim

# 定义一个简单的神经网络
class SimpleNN(nn.Module):
    def __init__(self):
        super(SimpleNN, self).__init__()
        self.fc1 = nn.Linear(10, 50)
        self.fc2 = nn.Linear(50, 1)
    
    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

# 初始化模型
model = SimpleNN()

# 定义损失函数
criterion = nn.MSELoss()

# 定义优化器
optimizer = optim.Adam(model.parameters(), lr=0.001)

# 示例训练步骤
for epoch in range(100):  # 训练 100 个 epoch
    # 假设输入和目标数据
    inputs = torch.randn(16, 10)  # 16 个样本,每个样本 10 维
    targets = torch.randn(16, 1)  # 16 个样本,每个样本 1 维目标

    # 清零梯度
    optimizer.zero_grad()

    # 前向传播
    outputs = model(inputs)
    
    # 计算损失
    loss = criterion(outputs, targets)
    
    # 反向传播
    loss.backward()
    
    # 更新参数
    optimizer.step()

    # 打印损失值
    print(f'Epoch {epoch+1}, Loss: {loss.item()}')

解释

  1. 定义模型:我们定义了一个简单的神经网络 SimpleNN
  2. 定义损失函数:使用均方误差损失函数 nn.MSELoss
  3. 定义优化器:使用 optim.Adam,传入模型参数和学习率。
  4. 训练循环: - 清零梯度(optimizer.zero_grad())。- 执行前向传播(model(inputs))。- 计算损失(criterion(outputs, targets))。- 反向传播(loss.backward())。- 更新参数(optimizer.step())。
optim.Adam

通过调整每个参数的学习率来加速训练过程,并且能够在训练过程中适应不同参数的更新幅度,使得模型更容易收敛。

实例参数解析

amsgrad: False

betas: (0.9, 0.999)

eps: 1e-08

lr: 0.001

weight_decay: 0


这些参数是用于设置优化器(通常是Adam或AdamW)在训练深度学习模型时的配置。

  1. amsgrad: False- amsgrad 是Adam优化器的一种变体的一个参数,用于决定是否使用AMSGrad变体。AMSGrad是一种改进版的Adam优化器,旨在提高收敛性和训练稳定性。设置为False意味着正在使用标准的Adam优化器而不是AMSGrad变体。
  2. **betas: (0.9, 0.999) **- betas 是Adam优化器中的两个超参数,用于控制一阶和二阶矩估计的指数衰减率。第一个值(0.9)用于一阶矩(梯度的均值)的衰减,第二个值(0.999)用于二阶矩(梯度的平方的均值)的衰减。这两个值决定了优化器对历史梯度的记忆程度。较小的值使优化器对最近的梯度变化更加敏感。
  3. eps: 1e-08- eps 是一个小的常数,用于避免在计算过程中出现除零错误。在Adam优化器中,它用于稳定数值计算,确保在计算更新时不会因分母过小而导致数值不稳定。1e-08表示0.00000001,通常是一个很小的值,用于避免数值问题。
  4. lr: 0.001- lr 代表学习率(Learning Rate),是优化器的一个关键超参数,用于控制每次更新的步幅。较大的学习率可能会导致训练不稳定,而较小的学习率可能会导致训练过程缓慢。0.001是一个常见的初始值,表示每次更新时参数会根据梯度的大小调整0.001的步幅。
  5. weight_decay: 0- weight_decay 是用于L2正则化的一个参数,帮助防止过拟合。它通过在损失函数中添加一个惩罚项来控制模型的复杂度。weight_decay的值决定了正则化的强度。0表示没有正则化,即不对模型参数施加额外的惩罚。

本文转载自: https://blog.csdn.net/weixin_44012667/article/details/141037396
版权归原作者 朋也透william 所有, 如有侵权,请联系我们删除。

“optim.Adam()”的评论:

还没有评论