OCaml 的翅膀:机器学习的新选择
raven-ml/raven
OCaml 在机器学习领域的应用:Raven 项目
Raven 是一个全面的库、框架和工具生态系统,旨在将机器学习和数据科学能力引入 OCaml。
愿景
Raven 的目标是使 OCaml 中训练模型、运行数据科学任务和构建 pipeline 的效率和直观性与 Python 相当,同时利用 OCaml 固有的类型安全性和性能优势。我们优先考虑开发人员的体验和无缝集成。
状态
Raven 目前处于 pre-alpha 阶段,我们正在寻求用户反馈:
生态系统
Raven 是一系列子项目的集合,每个子项目都针对机器学习和数据科学工作流程的特定方面:
-
Ndarray:Raven 的核心,提供高性能数值计算,支持多设备(CPU、GPU),类似于 NumPy,但具有 OCaml 的类型安全性。
- Ndarray-CV:构建在 Ndarray 之上的一组计算机视觉实用程序。
- Ndarray-IO:一个用于以各种格式读取和写入 Ndarray 数据的库。
- Ndarray-Datasets:可以轻松地将流行的机器学习和数据科学数据集作为 Ndarray 访问。
-
Quill:一个交互式 notebook 应用,用于数据探索、原型设计和知识共享。
-
Hugin:一个可视化库,可生成出版质量的图表。
-
Rune:一个用于自动微分和 JIT 编译的库,灵感来自 JAX。
-
(更多即将推出!):Raven 是一个不断发展的生态系统,我们有令人兴奋的计划,增加更多的库和工具,使 OCaml 成为机器学习和数据科学的首选。
Python vs Raven:对比
下表将 Python 流行的用于数据科学的库与其 Raven 对应库进行了比较。有关详细的代码示例,请参阅链接的文档文件。
| 任务 | Python 生态系统 | Raven 生态系统 | 比较指南 | 例子 | | ---------------- | ------------------- | ------------------- | ------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- | | 数值计算 | NumPy | Ndarray | Comparison Guide | Examples | | 可视化 | Matplotlib, Seaborn | Hugin | Comparison Guide | Examples | | Notebook | Jupyter | Quill | N/A | N/A | | 自动微分 | JAX | Rune | In progress | In progress | | DataFrame 操作 | Pandas | Not yet | N/A | N/A | | 深度学习 | Pytorch, Tensorflow | Not yet | N/A | N/A |
贡献
我们欢迎所有人的贡献,无论您是 OCaml 专家、数据科学家,还是只是对该项目感到好奇:
- 报告 bugs 或功能请求的问题
- 提交 pull requests 以改进代码、文档或示例
有关详细指南,请参阅我们的 CONTRIBUTING.md。
许可证
Raven 在 ISC License 下可用,可免费用于个人和商业用途。