本仓库汇集了较为系统的 PyTorch 深度学习学习笔记与实现,包含较为完整的从基础神经网络到进阶架构与实战任务。代码参考并改进自李沐(Li Mu)的课程与小土堆的 PyTorch 教程,力求实现既简洁清晰又能直接运行的示例,便于学习与复现。
具体而言,内容涵盖深度学习基础、计算机视觉(CV)、自然语言处理(NLP)以及各类经典与前沿模型的实现。
deep_learning_basic/: 包含深度学习模型构建的基础积木。- 自定义层 (
custom_layer.py) - 数据增广 (
image_augmentation.py) - 参数管理与读写
- 多 GPU 训练代码示例
- 自定义层 (
pytorch完整流程手搓basis/: 一个标准的 PyTorch 项目模版,包含从Dataset定义、DataLoader加载、模型构建、损失函数、优化器到 TensorBoard 可视化的完整链路。
位于 经典网络架构/ 目录下:
- LeNet-5: CNN 的鼻祖,用于手写数字识别。
- AlexNet: 深度学习复兴的里程碑。
- VGG: 使用重复元素的深层网络。
- NiN (Network in Network): 引入 1x1 卷积和全局平均池化。
- GoogLeNet: 含并行连结的网络 (Inception Block)。
- ResNet: 残差网络,解决了深层网络的梯度消失问题。
- 图像分类:
图像分类CIFAR-10: 基础的 CIFAR-10 数据集分类任务。树叶分类Classify_leaves: Kaggle 竞赛实战,包含 ResNet18 和 ResNet50 的迁移学习应用。狗品种识别ImageNet_Dogs: 使用预训练模型进行细粒度分类。
- 目标检测:
SSD: 手写 SSD 模型,包含多尺度目标检测的实现。Bounding_Box&目标检测数据集及代码: 介绍了锚框 (Anchor Boxes)、IoU 计算等检测任务的基础。
- 语义分割:
FCN: 全卷积网络,使用转置卷积进行上采样。
- 其他:
风格迁移: 将一张图像的风格迁移到另一张图像上。fine_tuning: 使用 ResNet18 对热狗数据集进行微调。
transformer/: 实现了 Transformer 的核心组件,包括多头注意力机制 (MHA) 和位置编码。bert/:bert_pretrain.py: BERT 预训练流程。bert_finetuning/: 在 SNLI 数据集上微调 BERT。
explore1/: 一个探索性的架构,尝试结合 Inception 模块与 Transformer Encoder/Decoder。
- SSSModel/: 包含自定义的注意力模块
SCSA(Spatial Channel Self-Attention) 和相关训练代码。 自编码器/: 实现了变分自编码器 (VAE) 并应用于 MNIST 数据集生成。房价预测House_price_predict/: 经典的回归入门任务,提供了单层线性网络和多层感知机 (MLP) 两种实现方案。
建议使用 Conda 创建一个新的虚拟环境:
conda create -n dlnote python=3.8
conda activate dlnote然后安装项目依赖:
pip install -r requirements.txt-
基础训练演示:
cd pytorch完整流程手搓basis/ python train.py -
经典网络 (例如 LeNet):
cd 经典网络架构/LeNet/ python LeNet.py -
BERT 微调:
cd bert/bert_finetuning/ python bert_finetuning.py
经过系统学习与大量练习,我把从基础概念、经典网络到实战任务的理解和实现整理成了这个仓库。写这些笔记的初衷是让自己把知识吃透,能上手改改代码,并把能直接运行、容易复现的代码分享给更多像我一样的学习者。
如果你正在学习深度学习或准备做项目or竞赛,这个仓库可以作为一个动手实践的起点:
- 每个模块尽量提供可运行的示例和详尽注释,便于快速上手;
- 代码风格保持模块化,方便拿来微调或二次开发;
- 我也欢迎大家提出 issues、PR 或直接在 Discussions 里交流问题与改进建议。
希望你能拿走你需要的代码、跑通示例、并把你的经验回馈到仓库中,让它变得更好,也让更多人能更容易地上手深度学习。欢迎大家一起用、一起改、一起交流一起进步呀!
- 增加更多前沿架构(如 Swin Transformer)
- 实现更多 NLP 模型
- 补充强化学习示例
感谢以下开源资源与社区对本项目的启发与支持:
- Li Mu (李沐)老师:优秀的《动手学深度学习》(Dive into Deep Learning)课程与 d2l 包
- Xiao Tu Dui (小土堆)老师 :详尽的 PyTorch 教程资源和易上手的代码资源
- 广泛的开源社区:感谢大家共享的资料与工具(本项目也包含一些在kaggle比赛中表现优异的代码实现,具体引用详见对应文件,感谢大家的开源支持)
Contact me: Jackksonns (Jackson KK).
