PyTorch——优化器(9)

优化器根据梯度调整参数,以达到降低误差

python 复制代码
import torch.optim
import torchvision
from torch import nn
from torch.nn import Sequential, Conv2d, MaxPool2d, Flatten, Linear
from torch.utils.data import DataLoader

# 加载CIFAR10测试数据集,设置transform将图像转换为Tensor
dataset = torchvision.datasets.CIFAR10("./data", train=False, transform=torchvision.transforms.ToTensor(),
                                       download=True)
# 创建数据加载器,设置批量大小为64
dataloader = DataLoader(dataset, batch_size=64)

# 定义卷积神经网络模型
class TY(nn.Module):
    def __init__(self):
        super(TY, self).__init__()
        # 构建网络结构:3个卷积层+池化层组合,2个全连接层
        self.model1 = Sequential(
            Conv2d(3, 32, 5, padding=2),    # 输入3通道,输出32通道,卷积核5x5
            MaxPool2d(2),                   # 最大池化,步长2
            Conv2d(32, 32, 5, padding=2),   # 第二层卷积
            MaxPool2d(2),                   # 第二次池化
            Conv2d(32, 64, 5, padding=2),   # 第三层卷积
            MaxPool2d(2),                   # 第三次池化
            Flatten(),                      # 将多维张量展平为向量
            Linear(1024, 64),               # 全连接层,输入1024维,输出64维
            Linear(64, 10),                 # 输出层,10个类别对应10个输出
        )

    def forward(self, x):
        # 定义前向传播路径
        x = self.model1(x)
        return x

# 定义损失函数(交叉熵损失适用于多分类问题)
loss = nn.CrossEntropyLoss()
# 实例化模型
ty = TY()
# 定义优化器(随机梯度下降),设置学习率为0.01
optim = torch.optim.SGD(ty.parameters(), lr=0.01)

# 训练20个完整轮次
for epoch in range(20):
    running_loss = 0.0  # 初始化本轮累计损失
    
    # 遍历数据加载器中的每个批次
    for data in dataloader:
        imgs, targets = data  # 获取图像和标签
        outputs = ty(imgs)    # 前向传播
        result_loss = loss(outputs, targets)  # 计算损失
        
        optim.zero_grad()     # 梯度清零,防止累积
        result_loss.backward()  # 反向传播计算梯度
        optim.step()          # 更新模型参数
        
        running_loss += result_loss  # 累加损失值
    
    # 打印本轮训练的累计损失
    print(f"Epoch {epoch+1}, Loss: {running_loss}")
相关推荐
CoovallyAIHub1 分钟前
如何让SAM3在医学图像上比专用模型还强?一个轻量Adapter如何让它“秒变”专家?
深度学习·算法·计算机视觉
Feisy17 分钟前
使用深度学习检测元器件是否缺失零件-怎么快速地批量采集深度学习训练用的图片
人工智能·深度学习
亚里随笔24 分钟前
MiniRL:用LLM稳定强化学习的新范式与第一阶近似理论
人工智能·深度学习·机器学习·llm·rlhf·agentic
一条破秋裤1 小时前
零样本学习指标
深度学习·学习·机器学习
翔云 OCR API1 小时前
护照NFC识读鉴伪接口集成-让身份核验更加智能与高效
开发语言·人工智能·python·计算机视觉·ocr
茶色岛^2 小时前
解析CLIP:从“看标签”到“读描述”
人工智能·深度学习·机器学习
All The Way North-2 小时前
一文系统性理清PyTorch多分类任务交叉熵损失:从 Softmax 到 CrossEntropyLoss
人工智能·pytorch·深度学习·机器学习·交叉熵损失·多分类损失
Lau_way2 小时前
AVadCLIP: Audio-Visual Collaboration for Robust Video Anomaly Detection
人工智能·深度学习
这张生成的图像能检测吗3 小时前
(论文速读)BV-DL:融合双目视觉和深度学习的高速列车轮轨动态位移检测
人工智能·深度学习·计算机视觉·关键点检测·双目视觉·激光传感器
轻赚时代3 小时前
PC 端 AI 图像处理工具实操指南:抠图 / 证件照优化 / 智能擦除全流程解析
图像处理·人工智能·经验分享·笔记·深度学习·创业创新·学习方法