Artelnics/opennn

OpenNN - Open Neural Networks Library

什么是OpenNN?

OpenNN 是一个现代C++库(针对C++20标准编写),让开发者能够直接从C++代码中构建、训练和运行神经网络模型。它支持常见的数据类型——表格数据、图像、时间序列和纯文本——并且可以在普通CPU上运行,或者选配通过CUDA在NVIDIA GPU上运行。


谁可能使用它?

受众 重要性
在大型C++应用程序(例如机器人技术、金融、嵌入式系统)中需要神经网络组件的C++工程师。 无需切换语言或嵌入Python解释器;该库直接编译进二进制文件。
希望精细控制CPU与GPU执行、线程(OpenMP、oneTBB)和低级优化的性能导向团队。 您可以根据硬件和编译时约束选择匹配的后端。
偏好无重型Python依赖的自我包含、开源堆栈的研究人员或爱好者。 该库附带示例、针对PyTorch的基准测试和快速入门指南。
需要为闭源产品提供商业友好许可证的公司。 双重许可(AGPL + 商业)让您保持合规,同时保持专有代码私密。

它是如何工作的?

  1. 安装 – 克隆仓库,运行CMake,选择纯CPU或CUDA支持的构建。构建会自动拉取Eigen和zlib;其他可选运行时(MKL、oneDNN等)必须由用户提供。
  2. 编程模型 – 包含公共头文件(例如opennn/network/network.h),并使用OpenNN::命名空间创建层、损失函数、优化器等。该库遵循模块化布局(核心、数据、网络、后端)。
  3. 训练与推理 – 将数据(CSV、图像文件夹等)输入到DataSet对象中,配置NeuralNetwork,调用train(),然后调用predict()进行推理。同一模型可以导出为纯C或Python源代码,以便在不需要完整库的平台上部署。
  4. 基准测试与验证 – benchmarks/文件夹包含将OpenNN的速度和精度与PyTorch进行比较的脚本,遵循文档化的测量协议。
  5. 测试与CI – 单元测试位于tests/,GitHub Actions在每次推送时运行测试套件。

何时选择OpenNN而不是其他工具?

情况 OpenNN优势
仅C++代码库 – 您不需要Python运行时。 纯C++ API,可编译为静态或共享库。
嵌入式或实时系统 – 严格的二进制大小或延迟约束。 可导出的C代码和微调的编译选项;可选CUDA用于GPU加速。
需要双重许可 – 您想要AGPL基础,但需要商业路径用于专有产品。 来自Artelnics的明确双重许可模式,并提供商业选项。
性能比较 – 您想看看C++实现与PyTorch的对比。 内置基准套件,具有可重复的协议。

如果您已经严重依赖Python生态系统(PyTorch、TensorFlow)且不需要C++集成,那些工具可能更简单。OpenNN在C++集成、许可灵活性或低级性能控制是主要关注点时表现出色。


入门(快速回顾)

# 克隆并配置纯CPU构建
git clone https://github.com/Artelnics/opennn.git
cd opennn
cmake -S . -B ../opennn-build -DCMAKE_BUILD_TYPE=Release \
      -DOpenNN_DISABLE_CUDA=ON -DOpenNN_BUILD_EXAMPLES=ON
cmake --build ../opennn-build --target blank --parallel
# 运行最小示例
../opennn-build/bin/blank

从那里,按照examples/中的Iris示例训练分类器、评估并导出模型。


TL;DR

OpenNN是一个C++20神经网络库,可在CPU或CUDA GPU上运行,支持常见数据类型,提供导出为纯C/Python的功能,包含针对PyTorch的基准测试,并提供双重AGPL/商业许可证。对于需要原生C++ ML组件或希望精细控制部署和许可的开发者来说,这是一个坚实的选择。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目