最近在学习神经网络原理,分享一下自己用 Rust 写的轻量级自动微分库 ferris-grad。
Features
- PyTorch 风格的 autograd 引擎
- 核心代码不到 1000 行,纯 Rust 实现
- 零外部依赖(仅使用 rust 标准库实现核心反向传播部分)
包含什么?
实现仅仅包含了3个文件构成:
| 模块 | 功能 |
|------|------|
| scalar.rs | 标量计算图 + 反向传播 |
| tensor.rs | 张量操作 |
| nn.rs | 神经网络层 |
能做什么?
代码示例:
实现了一个Pytorch风格的api:
use anyhow::Result;
use ferris_grad::{Tensor, nn::Module};
fn main() -> Result<()> {
let a = Tensor::from_vec(vec![1.0.into(), 2.0.into(), 3.0.into()], [3, 1].into())?;
let b = Tensor::rand([3, 1].into())?;
let c = &a * &b;
println!("{}", c);
Ok(())
}
本项目的灵感来源:
- micrograd - Karpathy 的 python 微型 autograd 引擎
- microgpt - Karpathy 博客中的极简 GPT 实现
GitHub仓库地址: https://github.com/StepfenShawn/ferris-grad
目前只能调用cpu运算, 后续准备研究一下如何添加GPU的支持
欢迎 star、提 issue 或者 PR!🦀
Ext Link: https://github.com/StepfenShawn/ferris-grad
1
共 0 条评论, 1 页
评论区
写评论还没有评论