深度学习基础概念回顾(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% 概率丢弃神经元
相关推荐
ACP广源盛139246256738 分钟前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
向量引擎17 分钟前
向量引擎接入 GPT Image 2 和 deepseek v4:一个 api key 把热门模型串起来,开发者终于不用深夜修接口了
人工智能·gpt·计算机视觉·aigc·api·ai编程·key
努力努力再努力FFF28 分钟前
医生对AI辅助诊断感兴趣,作为临床人员该怎么了解和学习?
人工智能·学习
AI医影跨模态组学41 分钟前
如何将纵向MRI深度学习特征与局部晚期直肠癌新辅助放化疗后的免疫微环境建立关联,并解释其对pCR及预后的机制
人工智能·深度学习·论文·医学·医学影像·影像组学
Empty-Filled42 分钟前
AI生成测试用例功能怎么测:一个完整实战案例
网络·人工智能·测试用例
eastyuxiao42 分钟前
设计一个基于 OpenClaw 的 AI 智能体来辅助交易
人工智能
波动几何1 小时前
因果动力学架构技能cda
人工智能
Lucas_coding1 小时前
【Claude Code Router】 Claude Code 兼容 OpenAI 格式 API, Claude code 接入本地部署模型
人工智能·python
jinanwuhuaguo1 小时前
(第二十七篇)OpenClaw四月的演化风暴:OpenClaw 2026年4月全版本更新的文明级解读
大数据·人工智能·架构·kotlin·openclaw
测试员周周1 小时前
【AI测试系统】第5篇:从 Archon 看 AI 工程化落地:为什么"确定性编排+AI 弹性智能"是终局?
人工智能·python·测试