跳转至

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
  • 优化数据库类