MicroDNN
介绍
Github 仓库:https://github.com/ethan-enhe/ANN
MicroDNN 是一个纯 cpp 实现的轻量级神经网络库,包含了经典的神经网络算法。开发的目的是便于初学者理解神经网络相关知识并上手尝试,可以训练和运行较小的模型。
特性
- 轻量:仅 28 kb
- 低依赖:仅依赖 Eigen 库
- 仅头文件:仅包括一个
.h文件 - 封装良好,易于拓展
- 功能丰富,在有限的代码量中,实现了以下功能:
| 网络层 | 优化器 | 实用功能 |
|---|---|---|
| 常见激活函数(relu,swish,mish,...) | mini-batch sgd | sequential(网络层首尾相夹) |
| 线性层 | nesterov | 多种损失函数 |
| 批归一化 | adam | 简易数据库和训练函数 |
| 多通道卷积 | ||
| 2x2最大池化 |
缺点
- 性能不佳(尤其是卷积运算):基于 Eigen 实现,不支持 GPU 加速。底层优化较少,但后续会逐渐引入 img2col 等优化算法。
TODO
- 三维卷积
- 2x2最大池化
- 将朴素卷积运算改成 img2col
- 优化数据库类