MLPP

GitHub
1.1k 155 较难 2 次阅读 昨天MIT数据工具开发框架其他
AI 解读 由 AI 自动生成,仅供参考

MLPP 是一个专为 C++ 打造的机器学习库,致力于让 C++ 重回机器学习开发的核心舞台。长期以来,Python 主导了机器学习生态,导致 C++ 开发者面临工具匮乏的困境。MLPP 填补了这一空白,充当了底层系统与机器学习算法之间的桥梁。

它非常适合熟悉 C++ 的开发者、系统工程师以及对性能有严格要求的研究人员。通过 MLPP,用户可以直接利用 C++ 的高性能优势进行模型构建与部署。

技术亮点方面,MLPP 功能丰富且灵活。它不仅涵盖线性、逻辑及多种高级回归模型,还支持动态深度的神经网络。内置了超过二十种激活函数(如 ReLU、Swish、GELU)和十几种优化算法(包括 Adam、SGD 等)。此外,它还提供了完善的损失函数、正则化方法及权重初始化策略。数据层面采用标准 std::vector 模拟向量与矩阵,降低了学习门槛。只需简单的头文件包含与编译配置,C++ 开发者便能快速集成强大的机器学习能力。

使用场景

某物联网设备厂商的嵌入式团队,需要在低功耗网关上实时运行线性回归算法预测设备故障,但不想引入庞大的 Python 环境。

没有 MLPP 时

  • 必须集成 Python 解释器,导致固件体积膨胀数倍,超出嵌入式设备的存储限制。
  • 跨平台编译 TensorFlow 等深度学习库极其困难,依赖管理混乱且容易在交叉编译中出错。
  • C++ 主程序通过子进程调用 Python 接口存在显著延迟,无法满足毫秒级实时响应需求。
  • 维护 C++ 与 Python 两套语言代码增加了开发成本,数据传递和调试过程繁琐且不直观。

使用 MLPP 后

  • 直接使用头文件链接生成纯 C++ 二进制,内存占用极低,完美适配资源受限的嵌入式环境。
  • 内置线性及逻辑回归等多种算法,无需外部依赖即可快速构建并训练预测模型。
  • 原生 C++ 实现消除了进程间通信开销,推理速度提升数个数量级,满足高频交易或控制需求。
  • 统一代码栈简化了项目结构,利用现有 C++ 工程体系即可无缝集成机器学习功能,降低维护难度。

MLPP 让 C++ 开发者能在不牺牲性能的前提下,轻松将机器学习能力植入底层系统。

运行环境要求

操作系统
  • Linux
  • macOS
GPU

未说明

内存

未说明

依赖
notes该工具为 C++ 原生机器学习库,无需 Python 环境。安装需编译生成动态链接库 (.so),需使用 g++ 编译器并支持 C++17 标准。数据通过 std::vector 处理,主要依赖本地 CPU 计算能力,具体硬件资源需求未在文档中说明。
python无需 Python
g++
C++17
MLPP hero image

快速开始

ML++

机器学习(Machine Learning)是一个广阔且令人兴奋的学科,吸引了来自许多领域的专家关注。不幸的是,对于 C++ 程序员和爱好者而言,机器学习领域似乎缺乏支持。为了填补这一空白,并使 C++ 在机器学习(ML)领域获得真正的立足点,我们编写了此库。本库的意图是作为底层开发者和机器学习工程师之间的交汇点。

Installation

首先下载 ML++ 库的头文件。你可以通过克隆仓库并提取其中的 MLPP 目录来实现:

git clone https://github.com/novak-99/MLPP

接下来,执行 "buildSO.sh" shell 脚本:

sudo ./buildSO.sh

完成后,将 ML++ 源文件保存在本地目录中,并按以下方式包含它们:

#include "MLPP/Stat/Stat.hpp" // Including the ML++ statistics module. 

int main(){
...
}

最后,在完成项目创建后,使用 g++ 进行编译:

g++ main.cpp /usr/local/lib/MLPP.so --std=c++17

Usage

请注意,ML++ 使用 std::vector<double> 数据类型来模拟向量,使用 std::vector<std::vector<double>> 数据类型来模拟矩阵。

首先包含您选择的相应头文件。

#include "MLPP/LinReg/LinReg.hpp"

接下来,实例化一个类对象。别忘了将输入集和输出集作为参数传递。

LinReg model(inputSet, outputSet);

之后,调用您想要使用的优化器。对于迭代优化器,例如梯度下降(Gradient Descent),需要指定学习率、epoch(训练轮次)数量以及是否利用 UI 面板。

model.gradientDescent(0.001, 1000, 0);

太好了,现在准备测试!要测试单个测试实例,请使用以下函数:

model.modelTest(testSetInstance);

这将返回该示例模型的单一预测值。

要测试整个测试集,请使用以下函数:

model.modelSetTest(testSet);

结果将是模型对整个数据集的预测。

Contents of the Library

  1. 回归 (Regression)
    1. 线性回归 (Linear Regression)
    2. 逻辑回归 (Logistic Regression)
    3. Softmax 回归 (Softmax Regression)
    4. 指数回归 (Exponential Regression)
    5. Probit 回归 (Probit Regression)
    6. CLogLog 回归 (CLogLog Regression)
    7. Tanh 回归 (Tanh Regression)
  2. 深度动态大小神经网络 (Deep, Dynamically Sized Neural Networks)
    1. 可能的激活函数 (Possible Activation Functions)
      • 线性 (Linear)
      • Sigmoid
      • Softmax
      • Swish
      • Mish
      • SinC
      • Softplus
      • Softsign
      • CLogLog
      • Logit
      • 高斯累积分布函数 (Gaussian CDF)
      • RELU
      • GELU
      • Sign
      • 单位阶跃 (Unit Step)
      • Sinh
      • Cosh
      • Tanh
      • Csch
      • Sech
      • Coth
      • Arsinh
      • Arcosh
      • Artanh
      • Arcsch
      • Arsech
      • Arcoth
    2. 可能的优化算法 (Possible Optimization Algorithms)
      • 批量梯度下降 (Batch Gradient Descent)
      • 小批量梯度下降 (Mini-Batch Gradient Descent)
      • 随机梯度下降 (Stochastic Gradient Descent)
      • 带动量的梯度下降 (Gradient Descent with Momentum)
      • Nesterov 加速梯度 (Nesterov Accelerated Gradient)
      • Adagrad 优化器 (Adagrad Optimizer)
      • Adadelta 优化器 (Adadelta Optimizer)
      • Adam 优化器 (Adam Optimizer)
      • Adamax 优化器 (Adamax Optimizer)
      • Nadam 优化器 (Nadam Optimizer)
      • AMSGrad 优化器 (AMSGrad Optimizer)
      • 二阶牛顿 - 拉夫逊优化器 (2nd Order Newton-Raphson Optimizer)*
      • 正规方程 (Normal Equation)*

      *仅适用于线性回归
    3. 可能的损失函数 (Possible Loss Functions)
      • 均方误差 (MSE)
      • 均方根误差 (RMSE)
      • 平均绝对误差 (MAE)
      • 平均偏差误差 (MBE)
      • 对数损失 (Log Loss)
      • 交叉熵 (Cross Entropy)
      • 铰链损失 (Hinge Loss)
      • Wasserstein 损失 (Wasserstein Loss)
    4. 可能的正则化方法 (Possible Regularization Methods)
      • Lasso
      • Ridge
      • ElasticNet
      • 权重裁剪 (Weight Clipping)
    5. 可能的权重初始化方法 (Possible Weight Initialization Methods)
      • 均匀分布 (Uniform)
      • Xavier 正态分布 (Xavier Normal)
      • Xavier 均匀分布 (Xavier Uniform)
      • He 正态分布 (He Normal)
      • He 均匀分布 (He Uniform)
      • LeCun 正态分布 (LeCun Normal)
      • LeCun 均匀分布 (LeCun Uniform)
    6. 可能的学习率调度器 (Possible Learning Rate Schedulers)
      • 基于时间 (Time Based)
      • 基于轮次 (Epoch Based)
      • 基于步数 (Step Based)
      • 指数衰减 (Exponential)
  3. 预构建神经网络 (Prebuilt Neural Networks)
    1. 多层感知机 (Multilayer Perceptron)
    2. 自编码器 (Autoencoder)
    3. Softmax 网络 (Softmax Network)
  4. 生成建模 (Generative Modeling)
    1. 表格生成对抗网络 (Tabular Generative Adversarial Networks)
    2. 表格 Wasserstein 生成对抗网络 (Tabular Wasserstein Generative Adversarial Networks)
  5. 自然语言处理 (Natural Language Processing)
    1. Word2Vec (连续词袋模型 Continuous Bag of Words, Skip-Gram)
    2. 词干提取 (Stemming)
    3. 词袋模型 (Bag of Words)
    4. TFIDF
    5. 分词 (Tokenization)
    6. 辅助文本处理函数 (Auxiliary Text Processing Functions)
  6. 计算机视觉 (Computer Vision)
    1. 卷积操作 (The Convolution Operation)
    2. 最大池化、最小池化、平均池化 (Max, Min, Average Pooling)
    3. 全局最大池化、全局最小池化、全局平均池化 (Global Max, Min, Average Pooling)
    4. 预构建特征检测器 (Prebuilt Feature Detectors)
      • 水平/垂直 Prewitt 滤波器 (Horizontal/Vertical Prewitt Filter)
      • 水平/垂直 Sobel 滤波器 (Horizontal/Vertical Sobel Filter)
      • 水平/垂直 Scharr 滤波器 (Horizontal/Vertical Scharr Filter)
      • 水平/垂直 Roberts 滤波器 (Horizontal/Vertical Roberts Filter)
      • 高斯滤波器 (Gaussian Filter)
      • Harris 角点检测器 (Harris Corner Detector)
  7. 主成分分析 (Principal Component Analysis)
  8. 朴素贝叶斯分类器 (Naive Bayes Classifiers)
    1. 多项式朴素贝叶斯 (Multinomial Naive Bayes)
    2. 伯努利朴素贝叶斯 (Bernoulli Naive Bayes)
    3. 高斯朴素贝叶斯 (Gaussian Naive Bayes)
  9. 支持向量分类 (Support Vector Classification)
    1. 原始形式 (Primal Formulation) (铰链损失目标 Hinge Loss Objective)
    2. 对偶形式 (Dual Formulation) (通过拉格朗日乘子 Via Lagrangian Multipliers)
  10. K-Means 聚类
  11. k-近邻算法 (k-Nearest Neighbors)
  12. 异常值查找器 (Outlier Finder) (使用 Z 分数 Using z-scores)
  13. 矩阵分解 (Matrix Decompositions)
    1. SVD 分解 (SVD Decomposition)
    2. Cholesky 分解 (Cholesky Decomposition)
      • 正定性检查器 (Positive Definiteness Checker)
    3. QR 分解 (QR Decomposition)
  14. 数值分析 (Numerical Analysis)
    1. 数值微分 (Numerical Differentiation)
      • 单变量函数 (Univariate Functions)
      • 多变量函数 (Multivariate Functions)
    2. 雅可比向量计算器 (Jacobian Vector Calculator)
    3. 海森矩阵计算器 (Hessian Matrix Calculator)
    4. 函数近似器 (Function approximator)
      • 常数近似 (Constant Approximation)
      • 线性近似 (Linear Approximation)
      • 二次近似 (Quadratic Approximation)
      • 三次近似 (Cubic Approximation)
    5. 微分方程求解器 (Differential Equations Solvers)
      • 欧拉法 (Euler's Method)
      • 增长法 (Growth Method)
  15. 数学变换 (Mathematical Transforms)
    1. 离散余弦变换 (Discrete Cosine Transform)
  16. 线性代数模块 (Linear Algebra Module)
  17. 统计模块 (Statistics Module)
  18. 数据处理模块 (Data Processing Module)
    1. 设置和打印数据集 (Setting and Printing Datasets)
    2. 可用数据集 (Available Datasets)
      1. 威斯康星乳腺癌数据集 (Wisconsin Breast Cancer Dataset)
        • 二元 (Binary)
        • 支持向量机 (SVM)
      2. MNIST 数据集 (MNIST Dataset)
        • 训练集 (Train)
        • 测试集 (Test)
      3. 鸢尾花数据集 (Iris Flower Dataset)
      4. 葡萄酒数据集 (Wine Dataset)
      5. 加州住房数据集 (California Housing Dataset)
      6. 火灾与犯罪数据集 (芝加哥) (Fires and Crime Dataset (Chicago))
    3. 特征缩放 (Feature Scaling)
    4. 均值归一化 (Mean Normalization)
    5. 独热表示 (One Hot Representation)
    6. 反向独热表示 (Reverse One Hot Representation)
    7. 支持的色彩空间转换 (Supported Color Space Conversions)
      • RGB 转灰度 (RGB to Grayscale)
      • RGB 转 HSV (RGB to HSV)
      • RGB 转 YCbCr (RGB to YCbCr)
      • RGB 转 XYZ (RGB to XYZ)
      • XYZ 转 RGB (XYZ to RGB)
  19. 工具 (Utilities)
    1. TP, FP, TN, FN 函数 (TP, FP, TN, FN function)
    2. 精确率 (Precision)
    3. 召回率 (Recall)
    4. 准确率 (Accuracy)
    5. F1 分数 (F1 score)

正在进行的工作

ML++ 像大多数框架一样,是动态的并且不断变化。这在机器学习(Machine Learning, ML)领域尤为重要,因为新的算法和技术每天都在被开发出来。以下是目前 ML++ 正在开发的几个功能:

- 卷积神经网络(Convolutional Neural Networks)

- 支持向量机(SVM)的核函数

- 支持向量回归(Support Vector Regression)

引用来源

在创建 ML++ 的过程中,各种不同资料提供了帮助,我想在此向其中几项致谢。TutorialsPoint 的 此文章 在尝试实现矩阵行列式时提供了很大帮助,而 GeeksForGeeks 的 这篇文章 在尝试计算矩阵伴随矩阵和逆矩阵时也非常有用。

版本历史

v1.0.22022/02/13
v1.0.12022/01/29
v1.0.02022/01/22

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架