Ctorch 是一个轻量级 C++ 深度学习框架,用现代 C++ 实现。项目由笙歌@ShengFlow团队开发,目标是创建一个类似 PyTorch 的接口,让 C++ 开发者也能享受简单直观的深度学习体验。目前项目处于 RC1 版本开发阶段,已实现核心架构和基础功能。
// 简单示例:创建张量和自动微分
#include "Tensor.h"
int main() {
// 创建张量
Tensor a({1.0, 2.0, 3.0});
Tensor b({4.0, 5.0, 6.0});
// 自动微分计算
a.requires_grad(true);
b.requires_grad(true);
Tensor c = a * b;
Tensor d = c.sum();
d.backward();
std::cout << "a: " << a << std::endl;
std::cout << "b: " << b << std::endl;
return 0;
}作为一个轻量级深度学习框架,Ctorch 具有以下优势:
- 简洁易用:提供类似 PyTorch 的直观接口,降低 C++ 深度学习开发的门槛
- 高效灵活:核心计算优化,支持多设备扩展
- 模块化设计:清晰的代码结构,易于理解和扩展
- 自动微分:完整的自动微分系统,支持复杂计算图
- 现代 C++:使用现代 C++ 特性,代码风格简洁优雅
✅ 多维张量(Tensor)支持
✅ 自动微分(Autograd)系统
✅ 算子调度器(Scheduler)
✅ 多设备支持接口(预留)
✅ 统一的算子注册和调用机制
✅ 加法(Add)
✅ 减法(Sub)
✅ 乘法(Mul)
✅ 除法(Div)
✅ 矩阵乘法(MatMul)
✅ 一元负号(Neg)
// 基本运算
Tensor t(1.0); // 创建标量张量
Tensor t1({1.0, 2.0, 3.0}); // 创建 1D 张量
Tensor t2(ShapeTag{}, {2, 2}); // 创建 2x2 张量(默认零初始化)
// 算术运算
Tensor t3 = t1 + 5; // 广播加法
Tensor t4 = t1 * t1; // 元素级乘法
Tensor t5 = t2.matmul(t2); // 矩阵乘法
// 激活函数
Tensor t6 = t5.relu(); // ReLU 激活
// 自动微分完整流程
Tensor x({1.0, 2.0, 3.0});
x.requires_grad(true); // 开启自动微分
Tensor y = x * x;
Tensor z = y.sum();
z.backward(); // 反向传播
// 此时 x 已包含梯度信息- C++17 或更高版本
- CMake 3.12+
git clone https://github.com/ShengFlow/CTorch.git
cd CTorch
mkdir build
cd build
cmake ..
make./Ctorch_test- 将 Ctorch 的头文件和库文件添加到你的项目中
- 在 CMakeLists.txt 中添加依赖
- 包含必要的头文件并使用 Ctorch API
Ctorch
├── CMakeLists.txt
├── CONTRIBUTING.md
├── Dev_log.md
├── Inspirations.md
├── LICENSE
├── README.md
├── images # 图片资源
│ ├── logo-dark.png
│ ├── logo-light.png
│ ├── logo.jpg
│ └── logo.png
├── include # 头文件
│ ├── AutoDiff.h
│ ├── Ctools.h
│ ├── Ctorch_Error.h
│ ├── Ctorch_Scheduler.h
│ ├── Storage.h
│ └── Tensor.h
├── mnist # mnist测试
│ ├── mnist.cpp
│ ├── mnist_loader.cpp
│ ├── mnist_loader.h
│ ├── t10k-images-idx3-ubyte
│ ├── t10k-labels-idx1-ubyte
│ ├── train-images-idx3-ubyte
│ └── train-labels-idx1-ubyte
└── src
├── AutoDiff.cpp
├── Ctools.cpp
├── Storage.cpp
├── Tensor.cpp
├── kernels # 算子实现
│ ├── CPU-BASIC # CPU 基础实现
│ │ ├── Add_BASIC_kernel.cpp
│ │ ├── Cos_BASIC_kernel.cpp
│ │ ├── CrossEntropy_BASIC_kernel.cpp
│ │ ├── Div_BASIC_kernel.cpp
│ │ ├── Dot_BASIC_kernel.cpp
│ │ ├── MAE_BASIC_kernel.cpp
│ │ ├── MSE_BASIC_kernel.cpp
│ │ ├── MatMul_BASIC_kernel.cpp
│ │ ├── Mul_BASIC_kernel.cpp
│ │ ├── Neg_BASIC_kernel.cpp
│ │ ├── ReLU_BASIC_kernel.cpp
│ │ ├── Sigmoid_BASIC_kernel.cpp
│ │ ├── Sin_BASIC_kernel.cpp
│ │ ├── Softmax_BASIC_kernel.cpp
│ │ ├── Sub_BASIC_kernel.cpp
│ │ └── Tanh_BASIC_kernel.cpp
│ └── kernels.h
└── tests
├── performance_test.cpp
├── test.cpp
├── test_activation_loss.cpp
└── test_tensor_grad.cpp
- 完善常用激活函数(Sigmoid、Tanh、Softmax 等)
- 实现基础损失函数(MSE、CrossEntropy 等)
- 完善自动微分系统的正确性验证
- 建立完整的测试框架
- 优化核心算子的性能
- 实现神经网络模块(Linear、Conv2d 等)
- 支持 CUDA 设备加速
- 实现优化器(SGD、Adam 等)
- 提供数据加载和预处理工具
- 支持 ONNX 模型导入/导出
- 实现分布式训练支持
- 移动端部署优化
- 构建完整的深度学习生态系统
我们欢迎任何形式的贡献!如果你想参与 Ctorch 的开发:
- 报告问题:在 GitHub 上提交 Issue,描述你遇到的问题
- 代码贡献:Fork 仓库,修改代码,然后提交 Pull Request
- 文档完善:帮助改进文档和示例
- 功能建议:提出新功能或改进建议
请查看 CONTRIBUTING.md 了解详细的贡献流程。
本项目采用 MIT 许可证 - 详情见 LICENSE 文件。
如果你有任何问题或建议,欢迎联系我们:
- QQ:1113109729,2713906889,326319219.
- 提交issue
- 邮件:ctorch1024@163.com
"遇事不决,可问春风,春风不语,即随本心."
—— 烽火戏诸侯《剑来》