笔者手撸了简单的深度学习框架,这个小项目源于笔者学习pytorch的过程中对autograd的探索。项目名称为kitorch。
该项目基于numpy实现,代码的执行效率比cpu的pytorch要慢。尽然如此,我想对于初学者来说,还是可以看一下的。本项目代码见github。
下面这系列博客会写一些开发过程,计划如下:
〇 MNIST例子展示
一、基于Autograd的Tensor类
1.1、Autograd 自动求导
1.2、基于Autograd构建Tensor类
1.3、实现Tensor的四则运算、矩阵乘法
1.4、实现Tensor的sum、mean函数
1.5、几种激活函数实现
1.6、其他函数的实现
二、NeuralNetwork类
2.1、Module类的实现
三、优化器Optimezer
3.1、优化器Optimezer的实现
3.2、SGD的实现
3.3、各种自适应优化器的实现
3.4、例子1:线性分类和回归
四、卷积神经网络
4.1、卷积层conv2d的实现
4.2、pooling层、dropout层的实现
4.3、BatchNorm层的实现
4.4、例子2:手写MNIST数字识别
4.5、例子3:CIFAR10图像分类
4.6、例子4:DCGAN的动漫头像生成
五、递归神经网络
5.1、RNN、LSTM的原理
5.2、RNN、LSTM的实现
5.3、双向RNN
5.4、例子5:基于LSTM的语言模型
六、Transformer模型
6.1、Transformer的基本原理
6.2、Transformer的实现
6.3、例子6:Tiny-Tiny-Tiny-Bert
6.4、例子7:3Tiny-Bert-Bilstm-CRF NER标注