1000 行 rust 实现一个类似于 pytorch 的轻量级自动微分库

11 小时 15 分钟前
 StepfenShawn

最近在学习神经网络原理,分享一下自己用 Rust 写的轻量级自动微分库 ferris-grad

Features

包含什么?

实现仅仅包含了 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 !🦀

387 次点击
所在节点    程序员
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1207027

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX