23 个稳定版本
2.0.0-dev.0 | 2024 年 7 月 13 日 |
---|---|
1.10.0 | 2024 年 3 月 16 日 |
1.9.2 | 2024 年 2 月 14 日 |
1.9.1 | 2023 年 7 月 9 日 |
1.1.0 | 2020 年 3 月 18 日 |
#36 in 机器学习
用于 optima
1MB
17K SLoC
Easy ML
一个完全确定性的机器学习库,提供针对泛型数字类型的矩阵、命名张量、线性代数和自动微分,旨在易于使用。
使用方法
将 easy-ml = "1.10"
添加到您的 [dependencies]
1。
概述
这是一个纯 Rust 库,大量使用传递闭包、迭代器、泛型类型和其他 Rust 习惯用法,这是其他围绕另一个语言后端包装的机器学习库无法轻易提供的。这个库试图提供足够的文档来解释函数计算的内容、计算的含义以及您可能希望使用这个库完成的任务的示例。
- 线性回归
- k-means 聚类
- 逻辑回归
- 朴素贝叶斯
- 前馈神经网络
- 使用自动微分进行反向传播
- 使用自定义数字类型,如
num_bigint::BigInt
- 在浏览器中手写数字识别
这个库不是为深度学习设计的。所有实现都是更多或更少的教科书数学定义,没有广泛的优化。您可能会发现,一旦您探索了您的问题,您可能需要使用更快的库,或者您需要这里没有实现的东西,并不得不切换。我希望能够至少从这里开始可能是有用的。
库状态
Easy ML 目前可用于简单的线性代数任务,如线性回归。Easy ML 还支持存储和处理 N 维数据,这可以作为许多经典机器学习任务的基础。它还支持正向和反向自动微分,可用于训练简单的前馈神经网络。Easy ML 还支持编译到 Web Assembly。
抽象级别
与其他机器学习库通常创建对象/结构体来表示线性回归或 k-means 等算法不同,Easy ML 只在结构体中表示数据,而消费代码决定所有的控制流。虽然这可能在最初编写消费代码时需要更多努力,但它意味着修改算法要容易得多。
功能
serde
- 可选,启用 serde 序列化和反序列化实现,用于Matrix
和Tensor
。
1 - 如果您需要冻结 Rust 编译器版本,您应该使用波浪线要求指定次要版本,例如 easy-ml = "~1.10"
。Easy ML 不会在次要版本之间引入破坏性 API 变更,但会遵循 Rust 的最新稳定版本,因此可能在次要版本更新中引入对新语言功能(例如 const 泛型)的依赖。