#神经网络 # #神经 #可微 #网络 #计算

nightly drug

神经网络的可微分计算图

2 个版本

使用旧的 Rust 2015

0.0.2 2018 年 10 月 21 日
0.0.1 2018 年 8 月 26 日

#880 in 科学

MIT 许可证

56KB
1K SLoC

这是一个用于在 Rust 中编写微分程序(即神经网络)的包。

  • 请查看文档 docs.rs/drug 以获得更详细的描述
  • 查看示例 cargo run --example mnist --release!
  • 请给我反馈

版本

0.0.2

  • 保存功能
  • 新的优化器:动量、Adam、RMSProp
  • 节点现在都是枚举的一部分,而不是boxed traits
  • 根据 clippy 建议,更改了一些函数类型签名

0.0.1

  • 首次发布

lib.rs:

∂rug - 可微 Rust 图

这个crate是一个构建神经网络(可微分程序)的实用工具集合。有关标准神经网络的实现,请参阅 示例。您可能需要自己下载这些数据集才能使用。示例包括

  • Mnist 与密集网络
  • Mnist 与卷积神经网络(尽管速度令人尴尬地慢)
  • 使用 RNN 和 GRU 对 Penn TreeBank 字符进行预测

计划中的未来功能

  • 高级 API
    • 构建节点复合体(卷积 + 偏置 + ReLU)/ RNN 单元,具有参数重用
    • 子图 / 更新图的一部分(例如,用于 GAN)具有单独的优化器
  • 并行反向传播单个节点的多个参数
  • ndarray-parallel 或 OpenMPI 用于图复制和并行化
  • 链接到一些优化的 OpenCL 数学后端以利用 GPU

强化学习应用程序也可能对架构构成挑战,但我对这一过程了解不够,因此不考虑将其添加到库中。

愿望清单

  • 运算符重载 API + 利用类型系统和 const generics
    • 可能需要彻底重写.. 或者可能通过“图游标”特性和更复杂的处理程序(超出当前的 Idxs)来实现
  • 仅从循环定义的操作的自动微分(proc macros?)
  • 利用即时编译和操作/内核融合的优势
  • 其他类型的导数,例如雅可比矩阵

依赖项

~4.5MB
~90K SLoC