赞
踩
当前深度学习框架越来越成熟,对于使用者而言封装程度越来越高,好处就是现在可以非常快速地将这些框架作为工具使用,用非常少的代码就可以进行实验,坏处就是可能背后地实现都被隐藏起来了。在这篇文章里笔者将带大家一起从头设计和实现一个轻量级的(大约 200 行)、易于扩展的深度学习框架 tinynn,希望对大家了解深度学习框架的基本设计和实现有一定的帮助。
本文首先会从深度学习的流程开始分析,对神经网络中的关键组件抽象,确定基本框架;然后再对框架里各个组件进行代码实现;最后基于这个框架实现了一个 MNIST 分类的示例。
组件抽象
首先考虑神经网络运算的流程,神经网络运算主要包含训练 training 和预测 predict (或 inference) 两个阶段,
训练的基本流程是:输入数据 -> 网络层前向传播 -> 计算损失 -> 网络层反向传播梯度 -> 更新参数;
预测的基本流程是 输入数据 -> 网络层前向传播 -> 输出结果。
从运算的角度看,主要可以分为三种类型的计算
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。