引言
本着“凡我不能创造的,我就不能理解”的思想,本系列文章会基于纯Python以及NumPy从零创建自己的深度学习框架,该框架类似PyTorch能实现自动求导。
要深入理解深度学习,从零开始创建的经验非常重要,从自己可以理解的角度出发,尽量不适用外部完备的框架前提下,实现我们想要的模型。本系列文章的宗旨就是通过这样的过程,让大家切实掌握深度学习底层实现,而不是仅做一个调包侠。
本系列文章首发于微信公众号:JavaNLP
从零开始实现深度学习框架,可能会花费不少时间,我们需要编写不少的代码。但是一旦完成了这一项工作,看着通过我们自己的框架实现的RNN、seq2seq、BERT等技术时,一种自豪感油然而生。同时在这个过程中,我们会对其他的技术细节有深入的理解。对于我们使用、调试现有的自动求导库,如PyTorch都非常有帮助。
完整代码地址
点击 👉 metagrad
线路图
下面是从零实现深度学习框架的线路图(可点击跳转)。
点击进入线路图
目录
- 自动求导神器计算图
- 常见运算的计算图
- 计算图运算补充
- 实现自己的Tensor对象
- 实现Tensor的反向传播
- 理解广播和常见的乘法
- 优化反向传播相关代码
- 实现常见运算的计算图(上)
- 实现常见运算的计算图(下)
- 线性回归简介
- 动手实现线性回归
- 逻辑回归简介
- 动手实现逻辑回归
- Softmax回归简介
- 动手实现Softmax回归
- 实现Debug功能与no_grad
- 逻辑回归中的数值稳定
- Softmax回归中的数值稳定
- 深入浅出交叉熵
- 优化索引操作&交叉熵损失
- 神经元与常见激活函数
- 神经网络入门
- 手写前馈网络实现电影评论分类
- 过拟合与欠拟合
- 处理数据的加载
- 理解正则化(一)
- 理解正则化(二)
- 几种常用的权重初始化方法
- N-Gram语言模型(一)
- N-Gram语言模型(二)
- 利用GPU加速
- 从共现矩阵到点互信息
- 深入浅出Word2vec(上)
- 深入浅出Word2vec(下)
- 前馈网络语言模型
- 重构计算图的实现
- RNN从理论到实战【理论】
- RNN从理论到实战【实战】
- LSTM从理论到实战【理论】