2 个版本
使用旧的 Rust 2015
0.0.2 | 2018 年 10 月 21 日 |
---|---|
0.0.1 | 2018 年 8 月 26 日 |
#880 in 科学
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