引言
本着“凡我不能创造的,我就不能理解”的思想,本系列文章会基于纯Python以及NumPy从零创建自己的深度学习框架,该框架类似PyTorch能实现自动求导。
💡系列文章完整目录: 👉点此👈
要深入理解深度学习,从零开始创建的经验非常重要,从自己可以理解的角度出发,尽量不适用外部框架的前提下,实现我们想要的模型。本系列文章的宗旨就是通过这样的过程,让大家切实掌握深度学习底层实现,而不是仅做一个调包侠。
本文实现让RNN支持PackedSequence
提高运算效率。
RNNBase
确保已经阅读了 RNN实现 了解RNN是如何实现的。
首先需要修改RNNBase
的forward
方法,判断是否为压缩序列PackedSequence
,是的话,从中抽取压缩后的输入input
和每个时间步的批大小batch_sizes
。
然后修改F.RNN
实现,传入**batch_sizes
**。
最后,如果是压缩序列,需要将输出转换为Pack