深度学习基础概念回顾(Pytorch架构)

本篇将详细介绍 PyTorch 深度学习框架,包括pytorch的基础库和函数,以及深度学习中的一些基础概念,如张量、优化器、激活函数、超参数等。


Pytorch

1. PyTorch 简介

PyTorch 是一个开源的深度学习框架,由 Facebook 的人工智能研究院(FAIR)开发和维护。它支持动态计算图(Dynamic Computational Graph),广泛应用于计算机视觉、自然语言处理、强化学习等领域。

2. PyTorch 的主要特点

  1. 动态图机制(Dynamic Computation Graph)

    • 每次运行模型时都会动态创建计算图。便于调试,与静态图(如 TensorFlow 1.x)相比,代码更直观。
  2. 强大的 GPU 支持

    • 通过 CUDA 支持 NVIDIA GPU 加速。(tensor.to(device)
  3. 张量(Tensor)操作

    • 类似于 NumPy 的多维数组操作。
    • 自动求导(autograd),方便计算梯度和反向传播。
  4. 模块化,内置函数多

    • 模型可以通过继承 nn.Module 自定义。
    • 内置常用层(卷积、线性、RNN 等)和损失函数。
  5. 工具包多

    • TorchVision:计算机视觉工具包。
    • TorchText:自然语言处理工具包。
    • TorchAudio:音频处理工具包。
    • PyTorch Lightning、FastAI 等高层封装,简化训练流程。

3. PyTorch 的核心组成

  1. Tensor(张量)

    • PyTorch 的基本数据结构(计算单位),类似于多维数组
    • 支持 GPU 计算、自动求导。
    python 复制代码
    import torch
    x = torch.randn(3, 4)  # 创建一个 3x4 的随机张量
    y = x + 2               # 张量运算
  2. Autograd(自动求导)

    • 自动计算梯度,用于反向传播。
    python 复制代码
    x = torch.tensor([2.0], requires_grad=True)
    y = x ** 2
    y.backward()  # 自动计算梯度
    print(x.grad) # 4.0

    requires_grad=True :告诉 PyTorch 要追踪这个张量的计算历史,因为我们后面要对它求导(梯度)。有了这个属性,PyTorch 就会记录所有涉及 x 的操作,为反向传播做准备

  3. nn 模块(神经网络模块)

    • 提供层、损失函数和常用工具。
    python 复制代码
    import torch.nn as nn
    class SimpleNet(nn.Module):
        def __init__(self):
            super(SimpleNet, self).__init__()
            self.fc = nn.Linear(10, 1)
        def forward(self, x):
            return self.fc(x)
  4. Optimizer(优化器)

    • 更新模型参数,如 SGD、Adam 等。
    python 复制代码
    import torch.optim as optim
    model = SimpleNet()
    optimizer = optim.SGD(model.parameters(), lr=0.01)
  5. DataLoader(数据加载)

    • 批量读取数据,支持打乱和多线程加载。
    python 复制代码
    from torch.utils.data import DataLoader, TensorDataset
    dataset = TensorDataset(torch.randn(100, 10), torch.randn(100, 1))
    loader = DataLoader(dataset, batch_size=32, shuffle=True)

4. PyTorch 的训练流程

  1. 定义模型 :继承 nn.Module 或使用现成模型。

  2. 准备数据 :使用 DataLoader 加载训练和测试数据。数据清洗、数据划分...

  3. 定义损失函数 :如 nn.MSELoss()nn.CrossEntropyLoss()

  4. 定义优化器 :如 optim.Adam()

  5. 训练循环

    • 前向传播计算输出。
    • 计算损失。
    • 反向传播 (loss.backward())。
    • 更新参数 (optimizer.step())。
    • 清空梯度 (optimizer.zero_grad())。

Pytorch 基础库和函数

1. 张量(Tensor)相关

PyTorch 的核心是张量,它类似于 NumPy 的多维数组,但支持 GPU 加速和自动求导。

常用库:

python 复制代码
import torch

常用函数:

功能 函数 说明
创建张量 torch.tensor(data) 从列表/数组创建张量
随机初始化 torch.randn(shape) 标准正态分布随机张量
全零/全一 torch.zeros(shape), torch.ones(shape) 初始化张量
形状操作 x.view(), x.reshape(), x.squeeze(), x.unsqueeze() 改变张量形状
计算操作 torch.sum(), torch.mean(), torch.max(), torch.min(), torch.argmax() 常用数学操作
GPU操作 x.to('cuda'), x.cuda(), x.cpu() 张量在 CPU/GPU 间转换
自动求导 x.requires_grad_(), x.grad 开启梯度计算、获取梯度

2. 自动求导(Autograd)

用于反向传播计算梯度。

3. 神经网络模块(nn)

构建和训练深度学习模型。

python 复制代码
import torch.nn as nn

常用类和函数:

功能 类/函数 说明
模型基类 nn.Module 所有模型需继承
全连接层 nn.Linear(in_features, out_features) 常用线性层
卷积层 nn.Conv2d(in_channels, out_channels, kernel_size) 2D卷积
激活函数 nn.ReLU(), nn.Sigmoid(), nn.Softmax(dim) 非线性激活
损失函数 nn.MSELoss(), nn.CrossEntropyLoss(), nn.BCELoss() 训练目标函数
Dropout/BatchNorm nn.Dropout(p), nn.BatchNorm2d(num_features) 正则化和归一化

4. 优化器(Optimizer)

python 复制代码
import torch.optim as optim

常用类:

优化器 说明
optim.SGD(model.parameters(), lr=0.01) 随机梯度下降
optim.Adam(model.parameters(), lr=0.001) 自适应学习率优化
optim.RMSprop(model.parameters(), lr=0.001) RMSProp 优化

常用方法:

python 复制代码
optimizer.zero_grad()   # 清空梯度
loss.backward()         # 反向传播
optimizer.step()        # 更新参数

5. 数据加载(DataLoader)

python 复制代码
from torch.utils.data import Dataset, DataLoader, TensorDataset

6. 其他常用工具

  • 设备管理
python 复制代码
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
x = x.to(device)
model.to(device)
  • 保存与加载模型
python 复制代码
torch.save(model.state_dict(), 'model.pth')  # 保存模型参数
model.load_state_dict(torch.load('model.pth'))  # 加载模型参数
  • 梯度裁剪(防止梯度爆炸)
python 复制代码
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)

总结来说,PyTorch 最常用的库主要包括:

  1. torch → 张量操作 & 自动求导
  2. torch.nn → 神经网络层 & 损失函数
  3. torch.optim → 优化器
  4. torch.utils.data → 数据加载
  5. torch.cuda / device → GPU 加速

深度学习基础概念

超参数

是人为设定的,不是网络自己学习的参数。

学习率(Learning Rate, lr)

定义:控制每次参数更新的步长大小。

  • 作用

    • 学习率过大 → 训练不稳定,可能发散
    • 学习率过小 → 收敛慢,可能陷入局部最优

示例

python 复制代码
import torch
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

Pytorch 中在设置优化器的时候设置 learning rate

  • 这里 lr=0.001 表示每次梯度更新权重时,步长为 0.001。

通常会用学习率衰减(lr decay),训练后期降低学习率以精细调整参数。

批大小(Batch Size)

定义:一次送入网络训练的样本数量。

  • 作用

    • 小 batch → 梯度估计噪声大,但更容易跳出局部最优
    • 大 batch → 梯度更稳定,速度快,但占用显存大
Epoch

定义:完整遍历训练集一次算 1 个 epoch。

  • 作用:控制训练轮次,通常配合早停(Early Stopping)防止过拟合。
优化器(Optimizer)

定义:控制参数如何根据梯度更新。

  • 常见优化器

    • SGD:随机梯度下降
    • Momentum:加速收敛
    • Adam / AdamW:自适应学习率
    • RMSProp:适合非平稳目标
python 复制代码
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)

常见优化器示例:

优化器 特点 PyTorch 示例
SGD 基础随机梯度下降 torch.optim.SGD(model.parameters(), lr=0.01)
SGD + Momentum 梯度累积,减少震荡 torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
RMSProp 自适应学习率,适合非平稳目标 torch.optim.RMSprop(model.parameters(), lr=0.001)
Adam 自适应学习率 + momentum torch.optim.Adam(model.parameters(), lr=0.001)
AdamW Adam + 权重衰减(更好的正则化) torch.optim.AdamW(model.parameters(), lr=0.001, weight_decay=0.01)

一般 Adam 或 AdamW 作为默认优化器,收敛快,参数调节少。

激活函数(Activation Function)

定义:为神经元引入非线性能力,让网络能拟合复杂函数。

  • 常用激活函数

    • ReLUf(x)=max(0,x) → 高效,常用
    • Sigmoid:0~1 → 二分类输出
    • Tanh:-1~1 → 对称激活
    • GELU / LeakyReLU → 改进 ReLU

示例

python 复制代码
import torch.nn as nn
act = nn.ReLU()

网络层数 / 神经元数(Model Capacity)

定义:网络的深度和宽度。

  • 作用

    • 层数越多、神经元越多 → 模型更强大,可拟合复杂数据
    • 但参数多 → 容易过拟合,需要更多数据

示例

python 复制代码
nn.Linear(128, 64)  # 输入 128 个特征,输出 64 个神经元

正则化(Regularization)

定义:防止模型过拟合,控制复杂度。

  • 常用方法

    • L1 / L2 正则化:权重约束
    • Dropout:随机屏蔽部分神经元

示例

python 复制代码
nn.Dropout(p=0.5)  # 50% 概率丢弃神经元
相关推荐
Joseit1 小时前
AI应用生成平台:数据库、缓存与存储
数据库·人工智能·缓存
QYR_111 小时前
2025-2031年全球箱体与盒体搬运机器人行业全景报告(含市场规模、竞争格局及投资潜力)
人工智能·市场研究
@小蜗牛3 小时前
pycharm+raidrive+autodl
服务器·深度学习·pycharm
袁总6663 小时前
智能座舱问答
人工智能
Sirius Wu4 小时前
SFT/DPO/PPO/GRPO训练全解析
人工智能·深度学习·语言模型
Learn Beyond Limits4 小时前
Clustering|聚类
人工智能·深度学习·神经网络·机器学习·ai·聚类·吴恩达
KKKlucifer4 小时前
IDC发布AI+政务、财政、应急三大市场空间与厂商份额报告
人工智能·百度·政务
丁希希哇4 小时前
【论文精读】CogVideoX: Text-to-Video Diffusion Models with An Expert Transformer
人工智能·深度学习·transformer
网易伏羲4 小时前
网易伏羲受邀亮相2025云栖大会,展示AI领域前沿创新成果
人工智能
都是些老物件4 小时前
TensorFlow中的掩码传递
人工智能·python·tensorflow