最近在学习神经网络原理,分享一下自己用 Rust 写的轻量级自动微分库 ferris-grad。
实现仅仅包含了 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(())
}
本项目的灵感来源:
GitHub 仓库地址: https://github.com/StepfenShawn/ferris-grad
目前只能调用 CPU,后续研究一下如何在 GPU 上实现
欢迎 star 、提 issue 或者 PR !🦀
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.