深度学习基础概念回顾(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% 概率丢弃神经元
相关推荐
attitude.x2 小时前
PyTorch 动态图的灵活性与实用技巧
前端·人工智能·深度学习
骥龙3 小时前
XX汽集团数字化转型:全生命周期网络安全、数据合规与AI工业物联网融合实践
人工智能·物联网·web安全
zskj_qcxjqr3 小时前
告别传统繁琐!七彩喜艾灸机器人:一键开启智能养生新时代
大数据·人工智能·科技·机器人
Ven%3 小时前
第一章 神经网络的复习
人工智能·深度学习·神经网络
研梦非凡4 小时前
CVPR 2025|基于视觉语言模型的零样本3D视觉定位
人工智能·深度学习·计算机视觉·3d·ai·语言模型·自然语言处理
Monkey的自我迭代4 小时前
多目标轮廓匹配
人工智能·opencv·计算机视觉
每日新鲜事4 小时前
Saucony索康尼推出全新 WOOOLLY 运动生活羊毛系列 生动无理由,从专业跑步延展运动生活的每一刻
大数据·人工智能
空白到白4 小时前
机器学习-聚类
人工智能·算法·机器学习·聚类
中新赛克4 小时前
双引擎驱动!中新赛克AI安全方案入选网安创新大赛优胜榜单
人工智能·安全