一个快速的,仅标题的机器学习库
主页|下载|文档|帮助|
下载:当前稳定版本(4.6.2)
mlpack是一种直观,快速且灵活的仅标头的C ++机器学习库,并具有与其他语言的绑定。它是对Lapack的机器学习类似物,旨在将各种机器学习方法和功能作为机器学习研究人员的“瑞士军刀”。
mlpack的轻量级C ++实现使其非常适合部署,并且也可以通过C ++笔记本电脑进行交互式原型(可以在mlpack的主页上看到这些原型)。
除了其功能强大的C ++接口外, mlpack还提供命令行程序,Python绑定,Julia Bindings,Go Bindings和R Bindings。
快速链接:
- Quickstart指南:C ++,CLI,Python,R,Julia,去
- mlpack主页
- mlpack文档
- 示例存储库
- 教程
- 开发地点(GitHub)
mlpack使用开放式治理模型,并由NumFocus在财政上赞助。考虑进行免税捐款,以帮助项目为开发人员时间,专业服务,旅行,研讨会以及各种其他需求支付。
0。内容
- 引用细节
- 依赖性
- 安装
- C ++的用法
- 减少编译时间
- 建造mlpack的测试套件
- 进一步的资源
1。引用细节
如果您在研究或软件中使用mlpack ,请使用以下引用引用mlpack (以Bibtex格式给出):
mlpack2023,
title = { mlpack 4: a fast, header-only C++ machine learning library},
author = {Ryan R. Curtin and Marcus Edel and Omar Shrit and
Shubham Agrawal and Suryoday Basak and James J. Balamuta and
Ryan Birmingham and Kartik Dutt and Dirk Eddelbuettel and
Rishabh Garg and Shikhar Jaiswal and Aakash Kaushik and
Sangyeon Kim and Anjishnu Mukherjee and Nanubala Gnana Sai and
Nippun Sharma and Yashwant Singh Parihar and Roshan Swain and
Conrad Sanderson},
journal = {Journal of Open Source Software},
volume = {8},
number = {82},
pages = {5026},
year = {2023},
doi = {10.21105/joss.05026},
url = {https://doi**.*org/10.21105/joss.05026}
}\”>
@article{ mlpack 2023,
title = { mlpack 4: a fast, header-only C++ machine learning library},
author = {Ryan R. Curtin and Marcus Edel and Omar Shrit and
Shubham Agrawal and Suryoday Basak and James J. Balamuta and
Ryan Birmingham and Kartik Dutt and Dirk Eddelbuettel and
Rishabh Garg and Shikhar Jaiswal and Aakash Kaushik and
Sangyeon Kim and Anjishnu Mukherjee and Nanubala Gnana Sai and
Nippun Sharma and Yashwant Singh Parihar and Roshan Swain and
Conrad Sanderson},
journal = {Journal of Open Source Software},
volume = {8},
number = {82},
pages = {5026},
year = {2023},
doi = {10.21105/joss.05026},
url = {https://doi**.*org/10.21105/joss.05026}
}
引用对mlpack的增长和改善是有益的。
2。依赖项
mlpack需要以下其他依赖项:
- C ++ 17编译器
- armadillo> = 10.8
- Ensmallen> = 2.10.0
- 谷物> = 1.1.2
如果有STB库标头,将提供图像加载支持。
如果您是手工编译员,请确保启用Lapack和Blas。
3。安装
详细的安装说明可以在安装mlpack页面上找到。
4。使用C ++
将标题安装到Make Install中后,在应用程序中使用mlpack仅包括包含它。因此,您的程序应包括mlpack :
# include < mlpack .hpp >
当您链接时,请务必与Armadillo链接。如果您的示例程序是my_program.cpp,则您的编译器是GCC,并且您想在OpenMP支持(建议)和优化的情况下进行编译,请这样编译:
g++ -O3 -std=c++17 -o my_program my_program.cpp -larmadillo -fopenmp
请注意,如果要序列化(保存或加载)神经网络,则应在包含< mlpack .hpp>之前添加#Define mlpack _enable_ann_serialization。如果您不定义mlpack _enable_ann_serialization,并且您的代码序列化神经网络,则会发生汇编错误。
警告:编译以使用Pthreads的OpenBlas(0.3.26及以上)的较旧版本可能会使用太多的线程进行计算,从而导致明显的放缓。使用OpenMP编译的OpenBlas版本不会遭受此问题的困扰。有关更多详细信息和简单的解决方法,请参阅《测试构建指南》。
参见:
- 安装文档的测试程序编译部分,
- C ++ Quickstart,以及
- 这些示例存储库存储库提供了C ++中mlpack应用程序的一些示例,并带有相应的makefiles。
4.1。减少编译时间
mlpack是一个繁重的模板库,如果不使用护理,则项目的汇编时间可能很高。幸运的是,有多种减少汇编时间的方法:
-
包括< mlpack /methods /decision_tree.hpp>之类的单个标头,如果您仅使用一个组件,而不是< mlpack .hpp>。这减少了编译器要做的工作量。
-
仅使用mlpack _enable_ann_serialization定义,如果您在代码中序列化神经网络。当启用此定义时,编译时间将大大增加,因为编译器必须为每种可能的层类型的代码生成代码。 (默认情况下,大量额外的汇编开销是为什么不启用这一点的原因。)
-
如果您在多个.cpp文件中使用mlpack ,请考虑使用Extern模板,以便编译器仅对每个模板实例化一次;为要在.cpp文件中使用的每个mlpack模板类型添加明确的模板实例化,然后使用其他位置的外部定义让编译器知道它存在于其他文件中。
也存在其他策略,例如预编译标题,编译器选项,CCACHE等。
5。建筑mlpack的测试套件
请参阅“安装说明”部分。
6。进一步的资源
用户和开发人员都可以使用更多文档。
- 文档首页
要了解在短期和中期未来中mlpack的发展目标,请参见Vision文件。
如果您有问题,找到错误或需要帮助,可以尝试访问mlpack帮助页面或GitHub上的mlpack 。或者,可以在mlpack的矩阵上找到mlpack帮助;另请参见社区页面。
