【Pytorch常用模块总结】

打印 上一主题 下一主题

主题 1004|帖子 1004|积分 3012

数据准备

数据集预处理



  • torchvision.transforms

    • transforms.ToTensor():将 PIL 图像或 NumPy 数组转换为张量
    • transforms.Normalize(mean, std):标准化数据,指定均值和标准差
    • transforms.Resize(size):调解图像大小
    • transforms.RandomCrop(size):随机裁剪
    • transforms.RandomHorizontalFlip():随机水平翻转,用于数据加强
    • transforms.Compose(transforms_list):组合多个变换

数据集的导入



  • 自建数据集

    • torch.utils.data.Dataset

      • __init__:初始化数据集(如加载文件路径、标签)
      • __len__:返回数据集大小
      • __getitem__:定义如何获取单个样本及其标签
      • 可搭配 torchvision.transforms 进行预处理


  • 通用数据集

    • torchvision.datasets

      • 示例:torchvision.datasets.MNIST(root='./data', train=True, download=True)
      • 参数:train=True/False 区分练习集和测试集


数据集的加载



  • torch.utils.data.DataLoader

    • 参数:

      • batch_size:批次大小
      • shuffle=True/False:是否打乱数据(练习 True,测试 False)
      • num_workers:多线程加载数据的线程数
      • drop_last=True:抛弃最后一个不完整批次



定义模型



  • torch.nn

    • nn.Module:自定义模型需继承并实现 forward 方法
    • 常用层

      • nn.Linear(in_features, out_features):全连接层
      • nn.Conv2d(in_channels, out_channels, kernel_size):二维卷积层
      • nn.MaxPool2d(kernel_size):最大池化层

    • 激活函数

      • nn.ReLU()、nn.Sigmoid()

    • 正则化和归一化

      • nn.Dropout(p):随机抛弃,防止过拟合
      • nn.BatchNorm2d(num_features):批归一化

    • nn.Sequential:快速构建简单网络


定义损失函数



  • torch.nn

    • nn.CrossEntropyLoss():交叉熵损失(含 Softmax),多分类任务
    • nn.MSELoss():均方偏差,回归任务
    • nn.BCELoss() / nn.BCEWithLogitsLoss():二分类任务
    • 根据任务选择合适的损失函数


定义优化器



  • torch.optim

    • optim.SGD(model.parameters(), lr, momentum):随机梯度下降
    • optim.Adam(model.parameters(), lr, weight_decay):Adam 优化器
    • 参数:

      • lr:学习率
      • momentum:动量法参数(SGD)
      • weight_decay:L2 正则化参数

    • 学习率调度器

      • torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma):按步长衰减
      • torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer):根据指标调解



练习模型



  • torch.nn.Module

    • model.to(device):将模型移到 GPU/CPU,device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    • model.train():进入练习模式
    • torch.no_grad():禁用梯度盘算(验证/测试时利用)
    • 模型生存与加载

      • torch.save(model.state_dict(), 'path.pth'):生存模型参数
      • torch.save(model, 'path.pth'):生存整个模型
      • model.load_state_dict(torch.load('path.pth')):加载模型参数


  • 练习流程

    • 盘算损失 → 梯度置零 → 反向流传 → 更新参数

      • loss = loss_fn(output, y)
      • optimizer.zero_grad()
      • loss.backward()
      • optimizer.step()

    • 示例:
      1. for epoch in range(num_epochs):
      2.     model.train()
      3.     for batch_x, batch_y in data_loader:
      4.         batch_x, batch_y = batch_x.to(device), batch_y.to(device)
      5.         output = model(batch_x)
      6.         loss = loss_fn(output, batch_y)
      7.         optimizer.zero_grad()
      8.         loss.backward()
      9.         optimizer.step()
      复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

十念

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表