TinyDL的秉承简洁分层清晰的原则,并参考了通用的分层逻辑,整体的结构如下:
从下至上保持严格的分层逻辑:
1、ndarr包:核心类 NdArray,底层线性代数的简单实现,目前只实现CPU版本,GPU版本需要依赖庞大的三方库。
2、func包:核心类Function与Variable 分别是抽象的数学函数与变量的抽象,用于在前向传播时自动构建计算图,实现自动微分功能,其中Variable对应PyTorch的tensor。
3、nnet包:核心类Layer与Block表示神经网络的层和块,任何复杂的深度网络都是依赖这些Layer与Block的堆叠而层。实现了一些常用的cnn层rnn层norm层以及encode与decode的seq2seq架构等等。
4、mlearning 包:机器学习的通用组件的表示,深度学习是机器学习的一个分支,对应更广泛的机器学习有一套通用的组件,包括数据集,损失函数,优化算法,训练器,推导器,效果评估器等。
5、modality 包:属于应用层的范畴,目前深度学习主要应用任务图形图像的视觉,自然语言处理以及强化学习三部分,暂时还没有相应的领域的实现,希望在0.02版中实现GPT-2等原型。
6、example包:一些简单的能跑通的例子,主要包括机器学习的分类和回归两类问题,有曲线的拟合,螺旋曲线的分类,手写数字的识别以及序列数据的预测。接下来就从下至上,全栈式地简答串一下每层涉及的核心概念和简单实现。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。