您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 开发技术 > 正文

全面的数据科学C/C++机器学习库整理,再也不用百度搜了

发表于:2020-10-23 作者:为AI呐喊 来源:今日头条

引言和动机--为什么是C++?

C++是动态负载平衡、自适应缓存、开发大型数据框架和库的理想选择。谷歌的MapReduce,MunGDB,下面列出的大多数深度学习库都是用C++实现的。以超低延迟和极高吞吐量著称的Scylla,使用C++作为Apache Casand and Amazon DynDoDB的替代者进行编码。

C++作为编程语言(包括内存管理、性能特性和系统编程)的一些独特优势,绝对是开发快速可扩展的数据科学和大数据库最有效的工具之一。

此外,Julia(由麻省理工学院开发的一种编译的交互式语言)正在成为Python在科学计算和数据处理领域的潜在竞争对手。其快速处理速度、并行性、静态以及动态键入和用于插入库的 C++ 绑定功能,简化了开发人员/数据科学家集成和使用 C++ 作为数据科学和大数据库的工作。

1. 来自谷歌AI的TensorFlow

由 Google 开发的热门深度学习库,它拥有自己的工具、库和社区资源生态系统,使研究人员和开发人员能够轻松构建和部署 ML 支持的应用程序。

官方文档:https://www.tensorflow.org/lite/microcontrollers/library

GitHub:https://github.com/tensorflow/serving

2. Berkeley(伯克利)的Caffe

伯克利视觉和学习中心开发了用于快速功能嵌入或 Caffe C++卷积架构的深度学习框架。

GitHub:https://github.com/intel/caffe

3. 微软认知工具包 (CNTK)

微软认知工具包是一个统一的深度学习工具包,它通过定向图帮助将神经网络翻译为一系列计算步骤。

GitHub:https://github.com/microsoft/CNTK

4. mlpack 库

mlpack是一个快速、灵活的机器学习库,用 C++编写,提供具有 Python 绑定、Julia 绑定和 C++ 类的最先进的机器学习算法。

GitHub:https://github.com/mlpack/mlpack

5. DyNet

动态神经网络工具包(支持动态计算图形)或 DyNet 是一种用 C++ (在 Python 中具有绑定)编写的高性能神经网络库,可以在 CPU 或 GPU 上高效运行。它支持自然语言处理、图形结构、强化学习等。

GitHub:https://github.com/clab/dynet

6. Shogun

Shogun 是一个开源机器学习库,它提供广泛的高效和统一的机器学习方法,如多种数据表示、算法类和通用工具的组合,用于快速原型设计数据管道。

GitHub:https://github.com/shogun-toolbox/shogun

7. FANN

快速人工神经网络(FANN)是C语言中的多层人工神经网络,支持完全连接和稀疏连接的网络。它支持固定点和浮点中的跨平台执行。此外,它还支持基于拓扑的不断发展训练和基于反传播的DL模型培训。

GitHub:https://github.com/libfann/fann

8. OpenNN

开放神经网络 (OpenNN) 是一个开源 (C/C++) 神经网络高性能库,用于高级分析,支持分类、回归、预测等。

GitHub:https://github.com/Artelnics/opennn

9. SHARK库

Shark 是一个快速、模块化、通用的开源机器学习库 (C/C++),用于应用和研究,支持线性和非线性优化、基于内核的学习算法、神经网络以及各种其他机器学习技术。

GitHub:https://github.com/Shark-ML/Shark

10. Armadillo

Armadillo 是一个线性代数 (C/C++) 库,其功能类似于 Matlab。该库以快速将研究代码转换为生产环境、模式识别、计算机视觉、信号处理、生物信息学、统计学、计量经济学等而著名。

最全数据科学C/C++机器学习库整理,再也不用百度搜了

11. Faisis

faiss:此库(C/C++)用于高效相似性搜索和密集向量聚类。它包含以任何大小的向量集进行搜索的算法,这些向量可能不适合 RAM 中的矢量集。它还支持通过 CUDA 提供的可选 GPU 和可选 Python 接口。

GitHub:https://github.com/facebookresearch/faiss

12.随机森林

  • https://github.com/zhufangzhou/RandomForest
  • https://github.com/bjoern-andres/random-forest

13. Boosting

XGBoost – 并行优化的通用梯度提升库。

GitHub:https://github.com/dmlc/xgboost

ThunderGBM – 用于 GPU 上的 GBDTs 和随机森林的快速库。

GitHub:https://github.com/Xtra-Computing/thundergbm

LightGBM – 基于决策树算法的快速、分布式、高性能梯度提升(GBDT、GBRT、GBM 或 MART)框架,用于排名、分类和许多其他机器学习任务。

GitHub:https://github.com/Microsoft/LightGBM

CatBoost – 决策树库上的通用梯度提升,具有开箱即用的分类功能支持。它易于安装,包含快速推理实现,并支持 CPU 和 GPU(甚至多 GPU)计算。

GitHub:https://github.com/catboost/catboost

14. 推荐系统

Recommender(推荐) – 一个 C 语言库,使用协作过滤(CF)进行产品推荐/建议。

GitHub:https://github.com/GHamrouni/Recommender

混合推荐系统 – 基于scikit学习算法的混合推荐系统。

GitHub:https://github.com/SeniorSA/hybrid-rs-trainner

15. 自然语言处理

BLLIP 解析器 -- BLLIP 自然语言解析器(也称为查尼亚克 -约翰逊解析器)。

GitHub:https://github.com/BLLIP/bllip-parser

colibri-core -- C++库、命令行工具和 Python 绑定,用于快速、高效记忆地提取和处理基本语言结构(如 n-gram 和 skiagram)。

GitHub:https://github.com/proycon/colibri-core

CRF++ -- 用于分段/标记顺序数据的条件随机字段 (CLF) 的开源实现和其他自然语言处理任务。[已弃用]

GitHub:https://github.com/taku910/crfpp

CRFsuite -- CRFifsuite 是用于标记顺序数据的条件随机字段 (CLF) 的实现。[已弃用]

GitHub:https://github.com/chokkan/crfsuite

CRF 模型 -- 基于不同深度学习的 CRF模型。frog --为荷兰语开发的基于内存的NLP套件:PoS 标记器、lemmatizer、依赖分析器、NER、浅层解析器、形态分析仪。

GitHub:https://github.com/topics/crf-model

MeTA -- ModErn 文本分析是一个 C++ 数据科学工具包,有助于挖掘大文本数据,包括文本标记化,包括解析树、主题模型、分类算法、图形算法、语言模型、多线程算法等深层语义功能。

官方文档:https://meta-toolkit.org/

MIT信息提取工具包 -- C、C++ 和 Python 工具,用于命名实体识别和关系提取

GitHub:https://github.com/mit-nlp/MITIE

ucto -- 用于各种语言的 Unicode 感知正则表达式标记器、工具和C++库,支持 FoLiA 格式。

GitHub:https://github.com/LanguageMachines/ucto

16. 数据流挖掘

StreamDM: 适用于挖掘支持以下算法的大数据流。

GitHub:https://github.com/huawei-noah/streamDM-Cpp

SGD 学习者和感知器:

  • 朴素贝叶斯
  • CluStream
  • Hoeffding决策树
  • Bagging
  • 流KM ++

数据产生器:

  • HyperplaneGenerator
  • RandomTreeGenerator
  • RandomRBFGenerator
  • RandomRBFEventsGenerator

17. 数据结构/图形/动态编程算法

GitHub:https://github.com/TheAlgorithms/C-Plus-Plus

18. 通用机器学习

Darknet -- Darknet是一个开源神经网络框架,用 C 和 CUDA 编写,支持 CPU 和 GPU 计算。

GitHub:https://github.com/pjreddie/darknet

cONNXr -- ONNX 运行时以纯 C (99) 编写,零依赖关系集中在小型嵌入式设备上。对机器学习模型进行推理,无论您使用哪个框架进行训练。易于安装和编译无处不在,即使在非常旧的设备。

GitHub:https://github.com/alrevuelta/cONNXr

BanditLib -- 一个简单的多臂Bandit库。[已弃用]

GitHub:https://github.com/jkomiyama/banditlib

CUDA -- 这是一个快速 C++/CUDA 实现卷积深度学习

官方文档:https://code.google.com/p/cuda-convnet/

DeepDetect -- 一个用 C++ 11编写的机器学习API和服务器。它使最先进的机器学习易于使用并集成到现有应用程序中。

GitHub:https://github.com/jolibrain/deepdetect

分布式机器学习工具包 (DMTK) -- 微软的分布式机器学习(参数服务器)框架。在多台机器上启用大型数据集的训练模型。与它捆绑的当前工具包括:LightLDA 和分布式(多感)字嵌入。

官网:https://www.dmtk.io/(已停用)

DLib -- 一套 ML 工具,设计为易于在其他应用中安装。

官网:http://dlib.net/ml.html

DSSTNE -- 由亚马逊创建的软件库,用于使用 GPU 训练和部署深度神经网络,该软件库强调速度和扩展性,而不是实验灵活性。

GitHub:https://github.com/amazon-archives/amazon-dsstne

Fido -- 用于嵌入式电子和机器人技术的高度模块化 C++ 机器学习库。

GitHub:https://github.com/FidoProject/Fido

igraph -- 通用图形库。

官方文档:https://igraph.org/

英特尔DAAL -- 由英特尔开发并针对英特尔架构进行优化的高性能软件库。库为数据分析的所有阶段提供了算法构建块,并允许以批处理,联机和分布式模式处理数据。

GitHub:https://github.com/oneapi-src/oneDAL

libfm -- 一种通用方法,可以通过特征工程模拟大多数分解模型。

GitHub:https://github.com/srendle/libfm

MLDB -- 机器学习数据库是为机器学习而设计的数据库。通过RESTful API发送命令以存储数据,使用SQL探索数据,然后训练机器学习模型,并将其公开为API。

官方文档:https://mldb.ai/

MXNet -- 具有动态,可感知突变的Dataflow Dep Scheduler的轻量,便携式,灵活的分布式/移动深度学习;适用于Python,R,Julia,Go,Javascript等。

GitHub:https://github.com/apache/incubator-mxnet

proNet-core -- 通用网络嵌入框架:成对表示优化Network Edit。

GitHub:https://github.com/cnclabs/proNet-core

PyCUDA -- CUDA的Python接口

官方文档:https://mathema.tician.de/software/pycuda/

ROOT -- 模块化的科学软件框架。它提供了处理大数据处理,统计分析,可视化和存储所需的所有功能。

官网:https://root.cern.ch/

sofia-ml -- 快速增量算法套件。

官网:https://code.google.com/archive/p/sofia-ml

Stan -- 一种概率编程语言,利用汉密尔顿蒙特卡洛采样实现完整的贝叶斯统计推断。

官方文档:https://mc-stan.org/

Timbl -- 一种软件包/ C ++库,实现了几种基于内存的学习算法,其中IB1-IG是k最近邻分类的实现,而IGTree是IB1-IG的决策树近似,常用于NLP。

GitHub:https://languagemachines.github.io/timbl/

Vowpal Wabbit(VW) -- 一个快速的核心学习系统。

GitHub:https://github.com/VowpalWabbit/vowpal_wabbit

Warp-CTC -- 在CPU和GPU上快速并行地实现连接主义时间分类(CTC)。

GitHub:https://github.com/baidu-research/warp-ctc

ThunderSVM -- 在GPU和CPU上的快速SVM库。

GitHub:https://github.com/Xtra-Computing/thundersvm

LKYDeepNN -- 仅标头的 C++11 神经网络库。低依赖性,本地繁体中文文档。

GitHub:https://github.com/mosdeo/LKYDeepNN

xLearn -- 高性能,易于使用且可扩展的机器学习套件,可用于解决大规模的机器学习问题。 xLearn对于解决大规模稀疏数据上的机器学习问题特别有用,这在Internet服务(例如在线广告和推荐系统)中非常常见。

GitHub:https://github.com/aksnzhy/xlearn

Featuretools –一个用于自动特征工程的库。它擅长使用可重复使用的特征工程“基元”将事务和关系数据集转换为用于机器学习的特征矩阵。

GitHub:https://github.com/FeatureLabs/featuretools

skynet -- 用于学习神经网络的库,具有C接口,在JSON中设置了网。用C ++编写,并使用Python,C ++和C#进行绑定。

GitHub:https://github.com/Tyill/skynet

Feast -- 用于管理,发现和访问机器学习功能的功能存储。 Feast可为模型训练和模型服务提供一致的特征数据视图。

GitHub:https://github.com/feast-dev/feast

Hopsworks -- 具有AI的数据密集型平台,具有业界首个开源功能存储。 Hopsworks Feature Store既提供了用于基于Apache Hive进行培训和批处理的功能库,又为在线应用程序提供了基于MySQL Cluster的功能服务数据库。

GitHub:https://github.com/logicalclocks/hopsworks

Polyaxon -- 一个可重现和可扩展的机器学习和深度学习的平台。

GitHub:https://github.com/polyaxon/polyaxon

sara -- C ++计算机视觉库,具有易于理解且高效的计算机视觉算法实现。 [Mozilla Public License版本2.0]

GitHub:https://github.com/DO-CV/sara

ANNetGPGPU -- 基于GPU(CUDA)的人工神经网络库。 [LGPL]

GitHub:https://github.com/ANNetGPGPU/ANNetGPGPU

btsk -- 游戏行为树入门套件。 [zlib]

GitHub:https://github.com/aigamedev/btsk

Evolving Objects -- 基于模板的ANSI-C++演化计算库,可帮助您快速地编写自己的随机优化算法。 [LGPL]

官网:http://eodev.sourceforge.net/

frugally-deep -- 只使用C++中的 KARAS 模型的头文件库。[MIT]

GitHub:https://github.com/Dobiasd/frugally-deep

Genann -- C中的简单神经网络库。[zlib]

GitHub:https://github.com/codeplea/genann

PyTorch -- 具有强大GPU加速功能的Python中的张量和动态神经网络。

GitHub:https://github.com/pytorch/pytorch

Recast / Detour --(3D)导航网格生成器和探路器,主要用于游戏。 [zlib]

GitHub:https://github.com/recastnavigation/recastnavigation

tiny-dnn -- 在C++11中仅有标头,无依赖项的深度学习框架。 [BSD]

GitHub:https://github.com/tiny-dnn/tiny-dnn

Veles -- 用于快速深度学习应用程序开发的分布式平台。 [Apache]

GitHub:https://github.com/DingKe/veles

Kaldi -- 语音识别工具包。 [Apache]

GitHub:https://github.com/kaldi-asr/kaldi

19. 计算机视觉

CCV -- 基于 C/缓存/核心计算机视觉库,一个现代计算机视觉库。

GitHub:https://github.com/liuliu/ccv

VLFeat -- VLFeat 是一个开放和便携式的计算机视觉算法库,它具有 Matlab 工具箱。

官方文档:https://www.vlfeat.org/

EBLearn -- Eblearn 是一个面向对象的 C++库,实现各种机器学习模型 [弃用]

官网:http://eblearn.sourceforge.net/

OpenCV -- OpenCV 具有C++、C、Python、Java 和 MATLAB 接口,并支持 Windows、Linux、Android 和 Mac 操作系统。

官方文档:https://opencv.org/

VIGRA -- VIGRA 是一种通用的C++计算机视觉和机器学习库,用于使用 Python 绑定实现任意维数。

GitHub:https://github.com/ukoethe/vigra

Openpose -- 一个实时多人关键点检测库,用于身体、面部、手和脚的评估。

GitHub:https://github.com/CMU-Perceptual-Computing-Lab/openpose

20. Facebook 研究的FlashLight

FlashLight是一个快速、灵活的机器学习库,完全由Facebook AI Research Speech团队以及Torch和Deep Speech的创建者以C++编写而成。

GitHub:https://github.com/facebookresearch/flashlight

21. 阿里巴巴的MNN(移动神经网络)

MNN 是一个高效、轻量级的深度学习框架。它支持深度学习模型的推理和培训,具有业界领先的设备推理和训练性能。

Gitee:https://gitee.com/mirrors/mnn

22. Facebook 研究的Habitat-SIM

Habitat-SIM (C++) 库允许在高度逼真的和高效的 3D 模拟器中培训体现的 AI 代理 (虚拟机器人), 然后再将学到的技能转移到现实中。它使用静态数据集(例如 ImageNet、COCO、VQA)与 AI,其中代理通过从中学习在现实环境中工作。

GitHub:https://github.com/facebookresearch/habitat-sim