Skip to content

A hands-on repository dedicated to building mainstream deep learning models from scratch using PyTorch

Notifications You must be signed in to change notification settings

awmthink/pytorch-in-action

Repository files navigation

Pytorch In Action

A hands-on repository dedicated to building modern deep learning layers, models and tasks from scratch using PyTorch.

Pytorch Basics

Notebooks 说明
Tensor 介绍了pytorch中多维数组Tensor的基本使用,包括了它的属性、创建方法以及它支持的常见的运算
Automatic Differentiation 介绍了Pytorch中强大的自动微分机制,并尝试剖析其中背后的机制
Modules 介绍了定义深度学习中层、块、模型的基础 类型Module的基本使用方法,并从源码角度分析了 Module 模块背后对于状态成员以及子 Module 的遍历机制
Dataset and Dataloader 介绍了Pytorch中进行数据读取的接口以及自定义扩展的方法,从源码的角色分析了 Dataloader 的运作机制
Save and Load 介绍了pytorch中数据、模型、优化器等进行序列化保存与加载的机制

Pytorch Advanced

Title Notebooks 说明
Distributed Distributed 介绍了Pytorch中分布式训练相关的功能支持,重点介绍了其中的分布式数据并行的原理
Tensorboard Tensorboard 介绍了使用TensorBoard来记录训练过程中的一些Metrics
Auto Mixture Precision AutoMixPrecision 介绍了如何开启自动混合精度来加速模型的训练
Pytorch Lightning PytorchLightning 介绍了使用Pytorch Lightning来模块化我们的训练代码
Pytorch Image Models Timm 介绍了如何使用 timm 库来获取主流的视觉模型以及预训练权重,我们也可以基于这些模型进行扩展
transformers库的整体介绍 transformers 包括了Pipeline、Tokenizer、Model、Trainer、Dataset、Evaluate等

Models

Fundamental Modules

Notebooks 说明
Convolution 实现 从零开始分别实现了单通道卷积、多输入输出通道卷积、以及各种其他高效实现方案,包括 im2col 等,同时通过代码演示了转置卷积的实现原理以及卷积的反向传播实现原理。
Simple RNN 实现 从零实现了单个的 RNN Cell、多层 RNN 网络、双向 RNN 网络
LSTM 实现 从零实现了单个的 LSTM Cell、多层 LSTM 网络、双向 LSTM网络
GRU 实现 从零实现了单个的 GRU Cell、多层 GRU 网络、 GRU 网络
Transformer 架构实现 从零开始实现了 Token Embedding、位置编码、多头注意力模块等,并实现和验证了 EncodeLayer 以及 DecodeLayer 中的计算细节,比如 Padding mask 和 casual mask 的计算,在 infernece 模式下的自回归式的进行生成结果等。

ConvNets & MLP

Notebooks 说明
VGG 介绍了经典的 CNN 架构 VGG 模型,包括 VGG 的网络结构的设计特点和设计动机,并通过代码从零构建了 VGG 的网络。
GoogLeNet 介绍了经典的 Inception 构架的模型,从零实现了 Inception 模块和完整的 GoogLeNet 网络。
MobileNet 介绍了面向移动设备的轻量级卷积网络架构 MobileNet,介绍了其核心的深度可分离卷积的实现思路,并从零实现了整个 MobileNetV1 的架构
ResNet 介绍了 CNN 的最具有代表性的网络结构 ResNet,并从零开始逐步构建 ResNetBootleNeckLayer,ResNetStage,最后手动实现了一个完整的 ResNet50的结构。
DenseNet TODO
EfficientNet TODO
RegNet TODO
MLPMixer 通过代码实现 MixerBlock,展示了如何通过只使用 MLP 来替换 SelfAttention 和 Conv 实现图像分类上的高效的模型结构。
ConvMixer 实现了 ConvMixer 的模型结构,展示了在一个 patch 化的输入上进行 depth-wise 的卷积以及 1x1 卷积的一种模块设计。
ConvNext 实现了 ConvNext 中核心的 ConvNeXtBlock,展示了如何通过 7x7 的 Depthwise Conv 和 Pointwise Conv 来模拟 Transformer Block 结构。

Vision Trasnformer Model

近两年有哪些ViT(Vision Transformer)的改进算法? - 盘子正的回答 - 知乎

Notebooks 说明
Vision Transformer 重点实现了 ViT 架构中 PatchEmbedding 的部分,并介绍了当输入分辨率与预训练模型不一致时,如何对位置编码进行插值
Masked AutoEncoder 从零实现了 MAE 整个模型中的各个关键部分,尤其是对于图像的预处理部分,如何进行 Random Mask
Swin Transformer 实现了 SwinTransformer 的模型结构,从零开始实现了 PatchEmbedding、窗口化的自注意力机制、Shiftd Windows 机制、PathMerging 等
CvT: Convolutional vision Transformer TODO
DiNAT: Dilated NAT TODO
DEtection TRansfomrer TODO
MobileViT TODO
DeiT: Data-Efficient ViT TODO
BEiT TODO
DINO TODO

Text Transformer Model

Title Notebooks 说明
使用 Seq2Seq 模型来进行机器翻译 seq2seq.ipynb 演示了机器翻译数据集的预处理过程,通过 torch 中对于 Transformer 架构的支持,构建了一个 6 层的 Enocer-Decoder 架构的模型,实现了其正向的计算过程和整个模型的训练过程。
BERT bert.ipynb 深入分析Bert模型的各个层和算子的实现细节
GPT2 gpt2.ipynb 解析了GPT2模型的结构与计算过程
T5 t5.ipynb 分析了Encoder-Deocder结构的T5模型的详细原理与计算流程
Llama llama.ipynb TODO

Multi-Modality Model

Title Notebooks 说明

CV Tasks

Notebooks 说明
COCO 数据集介绍 介绍了 COCO 数据集的背景、标注格式等,并用代码演示了如何通过自定义数据集来加载 COCO 检测数据集
YOLO 目标检测 介绍了经典的目标检测算法框架 YOLO 系列,从 YOLOV1 开始,介绍了 YOLO 系列发展。

NLP Tasks

Title Notebooks 说明
Tokenizer Tokenizer 介绍了Tokenizer的详细功能
DistillBert DistillBert 分析DistillBert模型的结构与前向过程,并使用 DistillBert来微调一个文本分类模型
文本分类Finetune流程 Finetune 基于小型BERT模型rbt3的文本分类的完整Finetune流程

About

A hands-on repository dedicated to building mainstream deep learning models from scratch using PyTorch

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages