【PyTorch】Optim 优化器

简介: 【PyTorch】Optim 优化器

五、Optim 优化器

参考文档:https://pytorch.org/docs/stable/optim.html

1、SGD

参考文档:https://pytorch.org/docs/stable/generated/torch.optim.SGD.html#torch.optim.SGD

import torch.optim
import torchvision
from torch import nn
from torch.nn import Sequential, Conv2d, MaxPool2d, Flatten, Linear, CrossEntropyLoss
from torch.utils.data import DataLoader
dataset = torchvision.datasets.CIFAR10("../data", train=False, transform=torchvision.transforms.ToTensor(),
                                       download=True)
dataloader = DataLoader(dataset, batch_size=1)
class Tudui(nn.Module):
    def __init__(self):
        super(Tudui, self).__init__()
        self.model1 = Sequential(
            Conv2d(3, 32, 5, padding=2),
            MaxPool2d(2),
            Conv2d(32, 32, 5, padding=2),
            MaxPool2d(2),
            Conv2d(32, 64, 5, padding=2),
            MaxPool2d(2),
            Flatten(),
            Linear(1024, 64),
            Linear(64, 10)
        )
    def forward(self, x):
        x = self.model1(x)
        return x
loss = CrossEntropyLoss()
tudui = Tudui()
optim = torch.optim.SGD(tudui.parameters(), lr=0.01)  # 优化器

For循环1:

for data in dataloader:
    imgs, targets = data
    output = tudui(imgs)
    result_loss = loss(output, targets)
    optim.zero_grad()  # 清零
    result_loss.backward()  # 反向传播
    optim.step()  # 调优
    print(result_loss)
Files already downloaded and verified
tensor(2.3287, grad_fn=<NllLossBackward0>)
tensor(2.3879, grad_fn=<NllLossBackward0>)
tensor(2.2987, grad_fn=<NllLossBackward0>)
...

For循环2:

for epoch in range(20):
    running_loss = 0.0
    for data in dataloader:
        imgs, targets = data
        output = tudui(imgs)
        result_loss = loss(output, targets)
        optim.zero_grad()
        result_loss.backward()
        optim.step()
        running_loss += result_loss
    print(running_loss)
Files already downloaded and verified
tensor(18592.4395, grad_fn=<AddBackward0>)
tensor(16118.4756, grad_fn=<AddBackward0>)
tensor(15450.5898, grad_fn=<AddBackward0>)
...


目录
相关文章
|
机器学习/深度学习 缓存 监控
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
1074 0
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
|
2月前
|
机器学习/深度学习 算法 数据可视化
如果你的PyTorch优化器效果欠佳,试试这4种深度学习中的高级优化技术吧
在深度学习领域,优化器的选择对模型性能至关重要。尽管PyTorch中的标准优化器如SGD、Adam和AdamW被广泛应用,但在某些复杂优化问题中,这些方法未必是最优选择。本文介绍了四种高级优化技术:序列最小二乘规划(SLSQP)、粒子群优化(PSO)、协方差矩阵自适应进化策略(CMA-ES)和模拟退火(SA)。这些方法具备无梯度优化、仅需前向传播及全局优化能力等优点,尤其适合非可微操作和参数数量较少的情况。通过实验对比发现,对于特定问题,非传统优化方法可能比标准梯度下降算法表现更好。文章详细描述了这些优化技术的实现过程及结果分析,并提出了未来的研究方向。
39 1
|
7月前
|
机器学习/深度学习 监控 PyTorch
PyTorch模型训练:优化器与损失函数的选择
【4月更文挑战第17天】PyTorch中的优化器(如SGD, Adam, RMSprop)和损失函数(如MSE Loss, Cross Entropy Loss)对模型训练效果有显著影响。优化器选择应基于任务复杂度和数据规模,SGD适合简单任务,而Adam和RMSprop适用于复杂情况。损失函数选择依赖于任务类型,MSE Loss用于回归,Cross Entropy Loss用于分类。实践中,应尝试不同组合,调整学习率,监控训练过程,并使用验证集优化模型。
|
7月前
|
机器学习/深度学习 传感器 算法
PyTorch基础之优化器模块、训练和测试模块讲解(附源码)
PyTorch基础之优化器模块、训练和测试模块讲解(附源码)
176 0
|
机器学习/深度学习 存储 算法
Pytorch基本使用——优化器
总结了两种优化器,SGD和Adam及变种AdamW
269 0
|
机器学习/深度学习 人工智能 自然语言处理
【Pytorch神经网络理论篇】 10 优化器模块+退化学习率
反向传播的意义在于告诉模型我们需要将权重修改到什么数值可以得到最优解,在开始探索合适权重的过程中,正向传播所生成的结果与实际标签的目标值存在误差,反向传播通过这个误差传递给权重,要求权重进行适当的调整来达到一个合适的输出,最终使得正向传播所预测的结果与标签的目标值的误差达到最小,以上即为反向传播的核心思想
165 0
|
缓存 PyTorch 算法框架/工具
Pytorch教程[08]优化器
Pytorch教程[08]优化器
Pytorch教程[08]优化器