SGD、Adam

简介: 【9月更文挑战第23天】

在深度学习中,optimizer.zero_grad() 是一个非常重要的步骤,它用于在每次迭代开始前清除(重置)模型参数的梯度。这是因为大多数优化算法(如SGD、Adam等)都是基于梯度的,它们需要在每次参数更新后清零梯度,以避免梯度累积。

为什么需要 optimizer.zero_grad()

在训练神经网络时,我们使用反向传播算法来计算每个参数的梯度。这些梯度表示损失函数相对于每个参数的敏感度,告诉我们应该如何调整参数以最小化损失。在每次迭代中,我们根据这些梯度来更新参数。

如果不在每次迭代前清零梯度,梯度将会累积,即新的梯度会加到旧的梯度上。这会导致错误的更新,因为每次更新应该只基于当前迭代计算的梯度。

如何使用 optimizer.zero_grad()

在使用PyTorch等深度学习框架时,optimizer.zero_grad() 通常在每次训练迭代的开始被调用。以下是一个简单的训练循环示例,展示了如何在PyTorch中使用它:

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

# 定义一个简单的模型
model = nn.Sequential(
    nn.Linear(10, 5),
    nn.ReLU(),
    nn.Linear(5, 1)
)

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

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

# 假设有一些训练数据
inputs = torch.randn(5, 10)
targets = torch.randn(5, 1)

# 训练循环
for epoch in range(5):
    # 清除梯度
    optimizer.zero_grad()

    # 前向传播
    outputs = model(inputs)

    # 计算损失
    loss = loss_fn(outputs, targets)

    # 反向传播
    loss.backward()

    # 参数更新
    optimizer.step()

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

在这个例子中,我们首先定义了一个简单的线性模型、损失函数和优化器。在训练循环中,我们使用 optimizer.zero_grad() 来清除梯度,然后进行前向传播、计算损失、反向传播和参数更新。

代码解释:

  • optimizer.zero_grad(): 清除模型参数的梯度。
  • loss.backward(): 计算梯度,这是通过反向传播自动完成的。
  • optimizer.step(): 根据计算得到的梯度更新模型参数。
目录
相关文章
|
2月前
|
机器学习/深度学习 存储 自然语言处理
Adam介绍
【10月更文挑战第3天】
|
2月前
|
机器学习/深度学习 传感器 算法
Pytorch-Adam算法解析
肆十二在B站分享深度学习实战教程,本期讲解Adam优化算法。Adam结合了AdaGrad和RMSProp的优点,通过一阶和二阶矩估计,实现自适应学习率,适用于大规模数据和非稳态目标。PyTorch中使用`torch.optim.Adam`轻松配置优化器。
62 0
|
2月前
|
机器学习/深度学习 算法 PyTorch
Pytorch-SGD算法解析
SGD(随机梯度下降)是机器学习中常用的优化算法,特别适用于大数据集和在线学习。与批量梯度下降不同,SGD每次仅使用一个样本来更新模型参数,提高了训练效率。本文介绍了SGD的基本步骤、Python实现及PyTorch中的应用示例。
62 0
|
机器学习/深度学习 自然语言处理 算法
深度学习基础入门篇[三]:优化策略梯度下降算法:SGD、MBGD、Momentum、Adam、AdamW
深度学习基础入门篇[三]:优化策略梯度下降算法:SGD、MBGD、Momentum、Adam、AdamW
深度学习基础入门篇[三]:优化策略梯度下降算法:SGD、MBGD、Momentum、Adam、AdamW
|
机器学习/深度学习 算法 数据建模
SDG,ADAM,LookAhead,Lion等优化器的对比介绍
本文将介绍了最先进的深度学习优化方法,帮助神经网络训练得更快,表现得更好。有很多个不同形式的优化器,这里我们只找最基础、最常用、最有效和最新的来介绍。
435 0
|
机器学习/深度学习 人工智能 算法
Adam 优化算法详解
Adam 优化算法详解
362 0
Adam 优化算法详解
|
算法 TensorFlow 算法框架/工具
TensorFlow 常用优化器:GradientDescent、Momentum、Adam
TensorFlow 常用优化器:GradientDescent、Momentum、Adam
TensorFlow 常用优化器:GradientDescent、Momentum、Adam
|
机器学习/深度学习 PyTorch 算法框架/工具
【26】pytorch中的grad求导说明以及利用backward获取梯度信息
【26】pytorch中的grad求导说明以及利用backward获取梯度信息
448 0
【26】pytorch中的grad求导说明以及利用backward获取梯度信息