#matrix #tensor #machine-learning #linear-algebra #automatic-differentiation #linear-regression #back-end

easy-ml

提供矩阵、命名张量、线性代数和自动微分,旨在易于使用的机器学习库

23 个稳定版本

2.0.0-dev.02024 年 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

MPL-2.0 许可证

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 序列化和反序列化实现,用于 MatrixTensor

1 - 如果您需要冻结 Rust 编译器版本,您应该使用波浪线要求指定次要版本,例如 easy-ml = "~1.10"。Easy ML 不会在次要版本之间引入破坏性 API 变更,但会遵循 Rust 的最新稳定版本,因此可能在次要版本更新中引入对新语言功能(例如 const 泛型)的依赖。

依赖项