全面的數據科學C/C++機器學習庫整理,再也不用百度搜了
引言和動機--為什么是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。該庫以快速將研究代碼轉換為生產環境、模式識別、計算機視覺、信號處理、生物信息學、統計學、計量經濟學等而著名。

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