从零手写,循序渐进 — PyTorch 深度学习统一学习项目
60 Lessons · 7 Learning Tracks · 27 ML Algorithms · 1600+ Model Zoo Architectures · 650+ Tests
统一代码风格、统一训练脚手架、统一运行方式
让学习者真正能 "循序渐进跑通 → 改得动 → 能验收"
Quick Start · Learning Tracks · Model Zoo · ML Algorithms · Docs
|
Vision 从 LeNet 到 ViT, 736 架构 · 图像分类 / 检测 / 分割 |
NLP 从词嵌入到 Transformer, 813 架构 · 分类 / NER / 阅读理解 |
GNN 从 GCN 到 PinSAGE, 图分类 / 节点嵌入 / 推荐 |
Point Cloud 从 PointNet 到 PCT, 64 架构 · 分类 / 部件分割 / 重建 / 15 种自监督 |
Generative VAE & GAN, 手写数字重建与生成 |
① Vision — CNN / ViT 图像分类 · ② GNN — 图神经网络 · ③ Point Cloud — 3D 点云 · ④ Generative — VAE / GAN 生成
- What You'll Build
- Quick Start
- Prerequisites
- Learning Path
- Learning Tracks
- Foundations · Vision · NLP · GNN · Point Cloud · Generative · LLM
- Model Zoo
- NumPy ML Algorithms
- Optimization Toolkit
- Documentation
- Design Philosophy
- Contributing
- Citation
Tip
所有 lesson 均支持 --dataset fake 离线冒烟 — 无需下载任何数据集,2 分钟即可跑通。
# 克隆仓库
git clone https://github.com/skygazer42/DL-Hub.git
cd DL-Hub
pip install -r requirements.txt
# 仓库级冒烟测试(验证环境)
python scripts/smoke_check.py
# 跑通第一个 lesson
python -m tracks.vision.lesson_01_mnist_lenet.train \
--dataset fake --epochs 1 \
--max-train-batches 2 --max-eval-batches 2列出所有可运行的 lesson:
python scripts/run_lesson.py --list统一 CLI 参数(所有 lesson 通用)
| 参数 | 说明 | 示例 |
|---|---|---|
--dataset |
数据模式 | fake (离线冒烟) / toy / real |
--epochs |
训练轮数 | 10 |
--batch-size |
批大小 | 32 |
--learning-rate |
学习率 | 0.001 |
--seed |
随机种子 | 42 |
--device |
计算设备 | cpu / cuda / mps / auto |
--max-train-batches |
限制训练 batch 数 | 2 |
--max-eval-batches |
限制评估 batch 数 | 2 |
Note
本项目适合有一定 Python 基础的学习者。以下是各 track 的先修建议。
| Track | 先修知识 |
|---|---|
| Foundations | Python 基础、线性代数入门 |
| Vision | Foundations track + 卷积直觉 |
| NLP | Foundations track + 文本处理基础 |
| GNN | Foundations track + 图论基本概念 |
| Point Cloud | Vision track + 3D 几何直觉 |
| Generative | Vision track + 概率论基础 |
| LLM | NLP track + Transformer 机制 |
不知道从哪开始?根据你的时间选择一条学习路线:
Step 1–7 对应:Foundations → Vision → NLP → GNN → Point Cloud → Generative → LLM
| 路线 | 时间 | Lessons | 内容 |
|---|---|---|---|
| Weekend Sprint | 1-2 天 | 6 lessons | Foundations (2) → Vision lesson 01-02 → Generative lesson 01 → LLM lesson 01 快速建立从张量到生成模型的完整直觉 |
| Two-Week Deep Dive | 2 周 | 18 lessons | Foundations (2) → Vision (5) → NLP (4) → GNN (3) → Generative (2) → LLM (1) → Point Cloud (1) 覆盖所有 track 的核心 lesson |
| Full Curriculum | 4-6 周 | 60 lessons | 按顺序完成全部 7 个 track 的所有 lesson 系统掌握从经典 ML 到前沿深度学习的完整技能树 |
Tip
推荐顺序:Foundations → Vision → NLP → GNN → Point Cloud → Generative → LLM。每个 lesson 都有独立的 README 说明目标、先修和验收标准。
| Foundations 2 lessons |
Vision 14 lessons |
NLP 7 lessons |
GNN 11 lessons |
Point Cloud 23 lessons |
Generative 2 lessons |
LLM 1 lesson |
张量、自动求导、训练循环入门 — 所有后续 track 的基石。
| 序号 | 项目 | 代码文档 | 核心概念 |
|---|---|---|---|
| 1 | 张量操作 & Autograd 机制 | lesson_01_tensors | torch.Tensor, backward(), 计算图 |
| 2 | 从零实现线性回归 | lesson_02_linear_regression | 梯度下降, 损失函数, 参数更新 |
从 MNIST 入门到目标检测、语义分割、Vision Transformer。
| 序号 | 项目 | 代码文档 | 核心概念 |
|---|---|---|---|
| 1 | LeNet-5 图像分类 | mnist_lenet | 卷积层, 池化, 全连接 |
| 2 | MLP 图像分类 | mnist_mlp | 多层感知机, Flatten |
| 3 | AlexNet 图像分类 | mnist_alexnet | 深层卷积网络, Dropout |
| 4 | FCOS 目标检测 | synthetic_detection_fcos | Anchor-free, FPN, 回归头 |
| 5 | ViT 图像分类 | vit_toy_classification | Patch Embedding, Self-Attention |
| 6 | Swin Transformer 图像分类 | swin_toy_classification | Window Attention, Shifted Window |
| 7 | 关键点回归 | toy_keypoint_regression | 坐标回归, Heatmap |
| 8 | UNet 语义分割 | synthetic_segmentation_unet | Encoder-Decoder, Skip Connection |
| 9 | 多 Backbone 对比 | cnn_backbones_toy_classification | 统一接口, 特征提取 |
| 10 | 图像去噪(多模型) | synthetic_denoising | 合成噪声建模, 去噪回归 |
| 11 | YOLACT 实例分割 | synthetic_instance_segmentation_yolact | Prototype + Coefficients |
| 12 | YOLO 风格目标检测 | synthetic_detection_yolo | Grid/Objectness + BBox |
| 13 | 行人检测(FCOS) | synthetic_pedestrian_detection_fcos | Anchor-free 检测头 |
| 14 | 视频多目标跟踪(MOT) | video_mot_basics | 多目标轨迹预测, Presence + IoU |
支持的 Vision Backbones(208 算法族 / 736 架构 ID)
| 类别 | 代表架构 |
|---|---|
| 经典 CNN | AlexNet, VGG, GoogLeNet, ResNet, DenseNet, SqueezeNet |
| 高效网络 | MobileNet v1-v4, EfficientNet, GhostNet v1/v2, ShuffleNet, MNASNet, FBNet, MicroNet |
| 注意力 CNN | SENet, CBAM, BAM, ECA-Net, SK-Net, CoordAtt, SimAM, Triplet Attention |
| 现代 CNN | ConvNeXt v1/v2, RepVGG, RepLKNet, InceptionNeXt, HorNet, FocalNet, SLaK |
| Vision Transformer | ViT, DeiT, DeiT3, BEiT, EVA, CaiT, CrossViT, Swin v2, CSwin, MAE-ViT |
| 高效 Transformer | EfficientViT, TinyViT, EdgeViT, LightViT, FastViT, FasterViT, SwiftFormer |
| MLP 系列 | MLP-Mixer, gMLP, ResMLP, FNet, CycleMLP, AS-MLP, WaveMLP, MorphMLP |
| Hybrid | CoAtNet, MobileFormer, ConvFormer, Uniformer, CMT, MaxViT, MobileViT v1-v3 |
| 特殊结构 | CapsNet, ScatterNet, FractalNet, HighwayNet, HRNet, NAS 系列 |
完整列表见
python -m dlhub.vision.backbones.catalog --list,所有 backbone 均为纯 PyTorch 本地实现。
从 toy 文本分类到 Transformer、NER、阅读理解。
| 序号 | 项目 | 代码文档 | 核心概念 |
|---|---|---|---|
| 1 | Embedding + FC 文本分类 | toy_text_classification | 词嵌入, 词袋 |
| 2 | Transformer Encoder 文本分类 | toy_text_classification_transformer | Self-Attention, 位置编码 |
| 3 | BiLSTM 命名实体识别 | toy_ner_bilstm | 序列标注, BIO 标签 |
| 4 | Seq2Seq + Attention 序列生成 | toy_seq2seq_attention_generation | Encoder-Decoder, Bahdanau Attention |
| 5 | TextCNN 文本分类 | toy_text_classification_textcnn | 多尺度卷积核, 文本特征 |
| 6 | BiLSTM 文本分类 | toy_text_classification_bilstm | 双向 LSTM, 隐藏状态 |
| 7 | Span Prediction 阅读理解 | reading_comprehension | SQuAD 风格, Start/End Logits |
最丰富的 track — 从 toy 图分类到 Cora 节点分类、图嵌入、异构图推荐。
Graph Classification
| 序号 | 项目 | 代码文档 | 核心概念 |
|---|---|---|---|
| 1 | GCN 图分类 | toy_graph_classification | 邻接矩阵, 消息传递 |
| 2 | GIN 图分类 | gin_toy_graph_classification | WL Test, 图同构 |
| 3 | GAT 图分类 | gat_toy_graph_classification | 注意力系数, 多头注意力 |
Node Classification
| 序号 | 项目 | 代码文档 | 核心概念 |
|---|---|---|---|
| 4 | GCN Cora 节点分类 | cora_node_classification_gcn | 半监督学习, 谱方法 |
| 5 | Label Propagation Cora | label_propagation_cora | 经典基线, 无参数方法 |
| 6 | GraphSAGE Cora | graphsage_cora | 采样聚合, 归纳学习 |
Embedding & Advanced
| 序号 | 项目 | 代码文档 | 核心概念 |
|---|---|---|---|
| 7 | SDNE 节点嵌入 | sdne_karate_embedding | 自编码器, 一阶/二阶近似 |
| 8 | LINE 节点嵌入 | line_karate_embedding | 大规模网络, 边采样 |
| 9 | Metapath2Vec 异构图嵌入 | metapath2vec_toy_hetero_embedding | 元路径, 异构随机游走 |
| 10 | PinSAGE 推荐 | pinsage_toy_recommender | 随机游走采样, 工业级图推荐 |
| 11 | R-GCN 关系图节点分类 | rgcn_toy_node_classification | 关系特定权重, 知识图谱 |
3D 点云分类:PointNet → DGCNN → PointNet++ → 30+ Backbone Zoo。
| 序号 | 项目 | 代码文档 | 核心概念 |
|---|---|---|---|
| 1 | PointNet 点云分类 | pointnet_toy_classification | 点集排列不变性, T-Net |
| 2 | DGCNN 点云分类 | dgcnn_toy_classification | 动态图, EdgeConv |
| 3 | PointNet++ 点云分类 | pointnet2_toy_classification | 层级采样, Set Abstraction |
| 4 | 30+ Backbone Zoo 对比 | pointcloud_zoo_toy_classification | 统一接口, Backbone 对比 |
支持的 Point Cloud Backbones(30 算法 / 64 架构 ID)
| 类别 | 架构 |
|---|---|
| Set Models | PointNet, PointNet++, DeepSets |
| Graph Models | DGCNN, PointGAT, PointGCN, PointWeb |
| MLP Models | PointMLP, PointMixer, PointNeXt |
| Transformer | PCT, Point Transformer, PointBERT, PointMAE |
| Conv Models | KPConv, PointCNN, PointConv, ShellNet |
| Extra | CurveNet, GDANet, PAConv, PVCNN, RandLANet, RSCNN, SpiderCNN 等 |
VAE & GAN 最小实现 — 支持
--dataset fake离线冒烟。
| 序号 | 项目 | 代码文档 | 核心概念 |
|---|---|---|---|
| 1 | VAE 重建 & 生成 | vae_mnist | 重参数化技巧, KL 散度, ELBO |
| 2 | GAN 生成 | gan_mnist | 生成器/判别器对抗, 纳什均衡 |
Toy Causal Language Model — 从零搭建 Transformer 生成模型。
| 序号 | 项目 | 代码文档 | 核心概念 |
|---|---|---|---|
| 1 | Transformer 文本生成 | toy_causal_lm_transformer | Causal Mask, 自回归解码 |
Note
resources/pdfs/llms/ 下保留了 50+ 篇 LLM 相关论文与笔记,包括 PaLM、大模型综述等,可作为延伸阅读。
三大领域统一模型动物园 — 纯 PyTorch 本地实现,无需下载预训练权重,1600+ 架构 ID 一行切换
| Vision Zoo 208 算法族 · 736 架构 ID |
NLP Zoo 49 算法族 · 813 架构 ID |
Point Cloud Zoo 30 算法族 · 64 架构 ID |
所有 Zoo 遵循相同的设计模式:
- 一文件一算法族 — 如
resnet.py包含 ResNet-18/34/50/101 所有变体 - Lazy Import — 仅在使用时加载,启动零开销
- 统一接口 —
build(arch_id, num_classes=...)即可构建任意模型 - CLI 工具 —
--list列表、--search搜索、--smoke冒烟测试
# 列出所有可用架构
python scripts/vision_zoo.py --list
# 搜索特定架构
python scripts/vision_zoo.py --search convnext
# 冒烟测试
python scripts/vision_zoo.py --smoke resnet50细粒度视觉识别(FGVC)模型族补充:Bilinear / Part-based / Transformer / Prompt / CLIP / MLLM reasoning(toy-first, no downloads)
python scripts/fine_grained_recognition_zoo.py --list
python scripts/fine_grained_recognition_zoo.py --search transfg
python scripts/fine_grained_recognition_zoo.py --smoke dlfgvc:fine_r1_tiny时间线与方法说明见
dlhub/vision/fine_grained_recognition/README.md
行为识别(动作识别)模型族补充:Video (NCTHW) + Skeleton (NCTV),toy-first, no downloads
python scripts/action_recognition_zoo.py --list
python scripts/action_recognition_zoo.py --search stgcn
python scripts/action_recognition_zoo.py --smoke dlactv:c3d_tiny
python scripts/action_recognition_zoo.py --smoke dlacts:stgcn_tiny时间线与方法说明见
dlhub/vision/action_recognition/README.md
多目标跟踪模型族补充:2D 单相机 MOT,80 算法族(每族
tiny/small/base),toy-first, no downloads
python scripts/mot_zoo.py --list
python scripts/mot_zoo.py --search bytetrack
python scripts/mot_zoo.py --timeline
python scripts/mot_zoo.py --recommend realtime --top-k 8 --variant tiny
python scripts/mot_zoo.py --recommend occlusion --top-k 8 --variant tiny --emit-train-cmds
python scripts/mot_zoo.py --recommend realtime --top-k 3 --variant tiny --run-train-cmds
python scripts/mot_zoo.py --recommend realtime --top-k 3 --variant tiny --run-train-cmds --skip-existing
python scripts/mot_zoo.py --recommend realtime --top-k 3 --variant tiny --run-train-cmds --summary-only
python scripts/mot_zoo.py --recommend realtime --top-k 3 --variant tiny --run-train-cmds --rank-by loss
python scripts/mot_zoo.py --recommend realtime --top-k 3 --variant tiny --run-train-cmds --save-leaderboard outputs/vision/mot_leaderboard.json
python scripts/mot_zoo.py --recommend realtime --top-k 3 --variant tiny --run-train-cmds --save-artifacts-dir outputs/vision/mot_artifacts
python scripts/mot_zoo.py --recommend realtime --top-k 3 --variant tiny --run-train-cmds --save-artifacts-dir auto
python scripts/mot_zoo.py --smoke mot2d:sort_tiny组别、选型建议与 80 族列表见
dlhub/vision/mot/README.md
主要架构分类
| 类别 | 代表架构 | 数量 |
|---|---|---|
| 经典 CNN | AlexNet, VGG, GoogLeNet, ResNet, DenseNet | ~60 |
| 高效网络 | MobileNet v1-v4, EfficientNet v1/v2, GhostNet, ShuffleNet | ~80 |
| 注意力 CNN | SENet, CBAM, BAM, ECA-Net, SK-Net, CoordAtt | ~50 |
| 现代 CNN | ConvNeXt v1/v2, RepVGG, RepLKNet, HorNet, FocalNet | ~40 |
| Vision Transformer | ViT, DeiT, BEiT, Swin v2, CSwin, CaiT, CrossViT | ~120 |
| 高效 Transformer | EfficientViT, TinyViT, EdgeViT, FastViT, SwiftFormer | ~60 |
| MLP 系列 | MLP-Mixer, gMLP, ResMLP, FNet, CycleMLP, WaveMLP | ~50 |
| Hybrid | CoAtNet, MobileFormer, Uniformer, MaxViT, MobileViT | ~60 |
| 特殊结构 | CapsNet, FractalNet, HRNet, NAS 系列, Mamba | ~50 |
# 列出所有可用架构
python scripts/nlp_zoo.py --list
# 搜索特定架构
python scripts/nlp_zoo.py --search bert
# 冒烟测试
python scripts/nlp_zoo.py --smoke bert_base主要架构分类
| 类别 | 代表架构 |
|---|---|
| Transformer | BERT, GPT, T5, ALBERT, DistilBERT, Longformer, BigBird |
| 高效 Transformer | Performer, Nystromformer, FNet, Synthesizer, Linformer |
| RNN 系列 | LSTM, GRU, BiLSTM, BiGRU, IndRNN, SRU, QRNN |
| CNN 系列 | TextCNN, InceptionCNN, DPCNN, VDCNN, ResConv |
| MLP 系列 | gMLP, ResMLP, MLP-Mixer |
| 轻量级 | FastText, WaveNet, TCN |
# 在 lesson_04 中切换 backbone
python -m tracks.pointcloud.lesson_04_pointcloud_zoo_toy_classification.train \
--arch pointnet --dataset fake --epochs 1详细列表见 Point Cloud Track 的 Backbone 表格。
纯 NumPy 手写经典机器学习算法 — 零深度学习依赖,理解算法本质
| 类别 | 算法 | 文件 | 核心原理 |
|---|---|---|---|
| 线性模型 | Linear Regression | linear_models.py |
最小二乘, 梯度下降 |
| 线性模型 | Ridge Regression | linear_models.py |
L2 正则化, 闭式解 |
| 线性模型 | Logistic Regression | linear_models.py |
Sigmoid, 交叉熵 |
| 线性模型 | Softmax Regression | linear_models.py |
Softmax, 多分类交叉熵 |
| 核方法 | Linear SVM | svm.py |
Hinge Loss, 最大间隔 |
| 树模型 | Decision Tree | decision_tree.py |
Gini 不纯度, 递归分裂 |
| 集成方法 | Random Forest | random_forest.py |
Bagging, 特征随机采样 |
| 集成方法 | AdaBoost (Classification) | adaboost.py |
Boosting, Decision Stumps |
| 集成方法 | Gradient Boosting (Regression) | gradient_boosting.py |
Boosting, 残差拟合 |
| 概率模型 | Naive Bayes | naive_bayes.py |
条件独立, 平滑 |
| 概率模型 | GMM | gmm.py |
EM 算法, 高斯混合 |
| 生成模型 | LDA / QDA | discriminant_analysis.py |
高斯假设, 判别函数 |
| 近邻 | KNN | knn.py |
距离度量, 多数投票 |
| 聚类 | K-Means | kmeans.py |
质心迭代, Lloyd 算法 |
| 聚类 | K-Medoids | kmedoids.py |
Medoid, PAM |
| 聚类 | Agglomerative Clustering | clustering.py |
层次聚类, Linkage |
| 聚类 | DBSCAN | clustering.py |
密度聚类, 邻域扩展 |
| 聚类 | Spectral Clustering | spectral_clustering.py |
图拉普拉斯, 特征向量 |
| 降维 | PCA | pca.py |
特征值分解, 方差最大化 |
| 降维 | NMF | nmf.py |
非负分解, 乘法更新 |
| 降维 | FastICA | ica.py |
独立成分, Fixed-point |
| 降维 | Isomap | isomap.py |
测地距离, MDS |
| 序列模型 | Markov Chain | markov_chain.py |
转移矩阵, 平滑 |
| 序列模型 | N-gram LM | ngram.py |
计数, Laplace 平滑 |
| 序列模型 | Categorical HMM | hmm.py |
Forward / Viterbi, log-space |
| 神经网络 | Perceptron | perceptron.py |
感知机学习规则 |
| 神经网络 | MLP | mlp.py |
反向传播, 链式法则 |
所有文件位于 ml_algorithms/python/,使用 @dataclass 模式实现。
纯 NumPy 实现 — 理解优化器和调度器的数学本质
|
Optimizers
|
LR Schedulers
|
Losses
|
Metrics
|
更多优化算法
| 算法 | 目录 | 说明 |
|---|---|---|
| 蚁群优化 (ACO) | optimization/ACO/ |
旅行商问题求解,含原理图 |
| 遗传算法 (GA) | optimization/GA/ |
进化搜索,含流程图 |
| 粒子群优化 (PSO) | optimization/PSO/ |
群体智能优化 |
| 层次分析法 (AHP) | optimization/AHP/ |
多准则决策 |
| Lasso 优化 | optimization/Lasso/ |
L1 正则化路径,含可视化 |
| 文档 | 说明 | 适合谁 |
|---|---|---|
ROADMAP.md |
学习路线图与推荐顺序 | 初学者 |
INSTALL.md |
安装指南 | 所有人 |
RUNNING.md |
如何运行 Lesson | 所有人 |
STRUCTURE.md |
仓库结构详解 | 想深入了解的人 |
CONVENTIONS.md |
运行 & 实验约定 | 贡献者 |
STYLEGUIDE.md |
代码规范 | 贡献者 |
FAQ.md |
常见问题 | 遇到问题时 |
┌───────────────────────────────────────────────────────┐
│ DL-Hub 设计理念 │
├──────────────┬──────────────┬─────────────────────────┤
│ Offline-first │ 统一脚手架 │ 可复现 │
│ 所有 lesson │ 共享 dlhub/ │ 种子 + 配置 + 日志 │
│ 支持离线冒烟 │ 训练框架 │ 每次实验可追溯 │
├──────────────┼──────────────┼─────────────────────────┤
│ 渐进式 │ 测试覆盖 │ Model Zoo │
│ 由浅入深 │ 40+ pytest │ 1600+ 架构 ID │
│ 7 track 递进 │ CI 可集成 │ 三大领域统一接口 │
└──────────────┴──────────────┴─────────────────────────┘
详细说明
- Offline-first — 所有 lesson 支持
--dataset fake离线冒烟,无需下载任何数据集,10 秒内验证环境 - 统一脚手架 — 所有 lesson 共享
dlhub/框架:训练循环、设备管理、种子、检查点、JSONL 指标记录 - 可复现 — 种子管理 + 配置自动保存 + 指标日志,每次实验完整可追溯
- 渐进式 — 从基础张量操作到 Vision Transformer、GraphSAGE、PointNet++,由浅入深,7 个 track 层层递进
- 测试覆盖 — 40+ pytest 测试文件覆盖框架核心与所有 track,支持 CI 集成
- Model Zoo — 三大领域(Vision / NLP / Point Cloud)共 1600+ 架构 ID,纯 PyTorch 本地实现,统一接口一行切换
欢迎贡献!无论是修复 typo、补充 lesson 还是提出新的 track 想法。
- Fork 本仓库
- 创建你的分支 (
git checkout -b feature/amazing-lesson) - 遵循
docs/STYLEGUIDE.md代码规范 - 确保
python scripts/smoke_check.py通过 - 提交 PR
Note
每个新 lesson 应包含:model.py / data.py / train.py / README.md,并支持 --dataset fake 冒烟模式。详见 docs/CONVENTIONS.md。
如果本项目对你的学习或研究有帮助,欢迎引用:
@misc{dlhub2026,
title = {DL-Hub: A Unified PyTorch Deep Learning Learning Project},
author = {DL-Hub Contributors},
year = {2026},
url = {https://github.com/your-username/DL-Hub}
}本项目采用 MIT License 开源。代码自由使用,resources/pdfs/ 下的论文版权归原作者所有。
Built for learning. Built to run.
如果觉得有帮助,欢迎 Star 支持 ⭐

