PyTorch基础
Torch基础
1. torch
- 就是 PyTorch 框架本体。
- 提供深度学习的核心功能:
- 张量(Tensor)计算(类似 NumPy,但支持 GPU)
- 自动微分(autograd,方便训练神经网络)
- 优化器(SGD、Adam 等)(torch.optim
- GPU 加速(CUDA / cuDNN)
- 神经网络模块(torch.nn)
- 数据加载器(torch.utils.data)
👉 举例:
import torch
x = torch.rand(3, 3) # 随机矩阵
y = torch.ones(3, 3) # 全1矩阵
z = x + y # 张量运算
print(z)
# 自动求导
z.requires_grad_(True)
loss = z.sum()
loss.backward()
2. torchvision
- PyTorch 的 视觉扩展库,主要用于 图像和视频处理,偏向 基础功能 和 经典模型。
- 提供:
- 常用 数据集(CIFAR10, ImageNet, COCO 等)
- 图像变换(裁剪、缩放、归一化等)数据增强torchvision.transforms(随机裁剪、旋转、翻转…)
- 预训练模型(ResNet, VGG, EfficientNet, ViT, DETR、AlexNet、MobileNet 等)
- 图像 I/O:读写、处理图像(torchvision.io)
from torchvision import datasets, transforms, models
# 加载 CIFAR10 数据集
transform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor()
])
trainset = datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
# 加载预训练 ResNet18
model = models.resnet18(pretrained=True)
3. torchaudio
- PyTorch 的 音频扩展库,主要用于 语音和音频处理。
- 提供:
- 常见 音频数据集(LibriSpeech, YESNO 等)
- 信号处理工具(STFT,梅尔谱,MFCC 特征提取)
- 预训练模型(Wav2Vec2, HuBERT, Whisper 等)
import torchaudio
waveform, sample_rate = torchaudio.load("example.wav") # 读音频文件
print(waveform.shape, sample_rate)
# 提取梅尔频谱特征
mel_spectrogram = torchaudio.transforms.MelSpectrogram()(waveform)
print(mel_spectrogram.shape)
📌 总结对比
|
包 |
主要功能 |
适用领域 |
|
torch |
深度学习核心框架(张量、训练、GPU、自动微分) |
通用(NLP, CV, Audio, RL 等) |
|
torchvision |
计算机视觉扩展(数据集、预处理、模型库) |
图像 / 视频 |
|
torchaudio |
语音与音频扩展(数据集、特征提取、模型库) |
语音 / 音频 |
安装注意事项清单:
1. 版本要对应
这三个库必须和 PyTorch 本身的版本对应。
👉 举例(官方匹配表):
- torch==2.2.0+cu121
- torchvision==0.17.0+cu121
- torchaudio==2.2.0+cu121
如果版本不匹配,会报错,比如:
- ImportError: DLL load failed(Windows 下常见)
- undefined symbol(Linux 下常见)
📌 建议:
去 PyTorch 官网安装指令生成器:https://pytorch.org/get-started/locally/
2. CUDA 版本要对应
- 如果你想用 GPU 加速,torch 编译时绑定的 CUDA 版本必须和你电脑的 CUDA 驱动匹配。
- 比如:
- 你电脑安装了 CUDA 12.4 驱动
- 就应该安装
torch==2.3.1+cu124
- 如果 CUDA 版本太旧(例如 10.1),只能装比较老的 PyTorch(比如 1.7.x)。
📌 检查方法:
nvcc --version # 查看 CUDA 编译器版本
nvidia-smi # 查看驱动支持的 CUDA 最高版本
3. CPU vs GPU
如果你的显卡太老(比如 Quadro K2200 只支持 CUDA 11.2 左右),
就可能跑不动新版本的 PyTorch,这时可以:
- 安装 CPU 版本(不会用 GPU,装起来最简单):
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
或者装一个老版本,匹配你的 CUDA。
国内网络问题
- 在国内装 PyTorch 可能会下载失败(国外源太慢)。
- 建议使用清华源 / 阿里源 / 中科大源:
pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple
transformer 是什么
- Transformer 是一种 模型架构,最早由 2017 年《Attention is All You Need》提出。
- 它的核心思想是 自注意力(Self-Attention),用来处理序列数据(文本、语音、时间序列、甚至图像)。
- 现在 GPT、BERT、LLM、Vision Transformer(ViT) 等,都是 Transformer 家族。
👉 Transformer 是一个建筑设计图。
- torch 提供工具(张量、层、优化器、训练循环…)
- transformer 用这些工具搭出来
举个比喻:
- torch = 乐高积木
- transformer = 用乐高搭出来的一种“机器人模型”
- 你也可以用 torch 搭 CNN、RNN,不一定非得是 transformer。
你可以用 PyTorch 自己写 Transformer,比如:
import torch
import torch.nn as nn
class SimpleTransformer(nn.Module):
def __init__(self, d_model=128, nhead=8, num_layers=2):
super().__init__()
self.encoder_layer = nn.TransformerEncoderLayer(d_model=d_model, nhead=nhead)
self.transformer = nn.TransformerEncoder(self.encoder_layer, num_layers=num_layers)
def forward(self, x):
return self.transformer(x)
# 输入 (seq_len, batch_size, d_model)
x = torch.rand(10, 32, 128)
model = SimpleTransformer()
out = model(x)
print(out.shape) # torch.Size([10, 32, 128])
- PyTorch 官方自带了 torch.nn.Transformer 模块(简单版)
- HuggingFace Transformers 库(pip install transformers)是基于 PyTorch(也支持 TensorFlow)的 超大模型库,里面包含了 GPT、BERT、T5 等上百个预训练模型,直接调用就能用。
Timm (PyTorch Image Models)
- 第三方模型库(Ross Wightman 开发)
- 特点:
- 提供了大量 最新的图像模型(ViT、Swin Transformer、ConvNeXt、EfficientNet、MLP-Mixer…)
- 支持 预训练权重
- 提供训练工具:学习率调度器、优化器、数据增强策略(RandAugment、Mixup、CutMix)
- timm 的模型数量远超 torchvision,并且更新更快,跟踪 SOTA(state-of-the-art)模型。
👉 timm 是 torchvision 的扩展/增强版,尤其适合研究者和工程师快速试验最新模型。还提供了训练用的 数据增强、优化器、学习率调度器 等工具。
👉 timm 相当于一个模型仓库,让你不用自己手写复杂的网络结构。
👉 它
基于 torch 实现,是
torch 的“插件/扩展”。
|
库 |
作用 |
模型数量 |
数据处理 |
更新速度 |
适用场景 |
|
torch |
深度学习核心框架 |
无 |
基础张量运算 |
稳定更新 |
一切的基础 |
|
torchvision |
计算机视觉官方库 |
较少(几十个,经典模型) |
内置数据集 + transforms |
中速更新 |
基础学习、入门实验 |
|
timm |
第三方图像模型库 |
很多(上百个最新模型) |
提供部分增强策略 |
更新极快,紧跟 SOTA |
研究、工业落地、快速实验 |
triton
- 开发者:OpenAI
- 作用:一种编写 GPU 内核的语言/编译器,比 CUDA C++ 更易用。
- Triton 能用 Python 写出高效 GPU kernel,自动优化内存访问、并行等。
- PyTorch 从 2.0 开始集成了 Triton,用于:
- TorchInductor 编译器(加速 PyTorch 训练和推理)
- 自定义算子(如 FlashAttention、快速矩阵乘法)
👉 triton
是 torch 的加速引擎,让 Python 用户写 GPU 代码更简单。
👉 它属于底层优化层,不是直接的模型库。
例子(一个向量加法内核):
import triton
import triton.language as tl
@triton.jit
def add_kernel(x_ptr, y_ptr, output_ptr, n_elements, BLOCK_SIZE: tl.constexpr):
pid = tl.program_id(0)
block_start = pid * BLOCK_SIZE
offsets = block_start + tl.arange(0, BLOCK_SIZE)
mask = offsets < n_elements
x = tl.load(x_ptr + offsets, mask=mask)
y = tl.load(y_ptr + offsets, mask=mask)
tl.store(output_ptr + offsets, x + y, mask=mask)

浙公网安备 33010602011771号