2个版本
| 0.1.1 | 2023年6月2日 | 
|---|---|
| 0.1.0 | 2023年2月21日 | 
#2338 in 算法
37KB
837 行
Elara Math
Elara Math是一个Rust原生数学库,具有(当前或计划支持)
- 张量(n维数组)*(支持)
- 张量线性代数(支持)
- 数值求解积分和微分方程(进行中)
- 自动微分(支持)
*:目前尚不支持GPU张量,但计划在未来添加GPU加速
以下是一个使用elara-math的运行的小型神经网络示例。
use elara_math::prelude::*;
const EPOCHS: usize = 10000;
const LR: f64 = 1e-5;
fn main() {
    let train_data = tensor![
        [0.0, 0.0, 1.0],
        [1.0, 1.0, 1.0],
        [1.0, 0.0, 1.0],
        [0.0, 1.0, 1.0]];
    let train_labels = tensor![
        [0.0],
        [1.0],
        [1.0],
        [0.0]
    ].reshape([4, 1]);
    let mut weights = Tensor::rand([3, 1]);
    for epoch in 0..EPOCHS {
        let output = train_data.matmul(&weights).relu();
        let loss = elara_math::mse(&output, &train_labels);
        println!("Epoch {}, loss: {:?}", epoch, loss);
        loss.backward();
        let adjustment = weights.grad() * LR;
        weights = weights - Tensor::new(adjustment);
        weights.zero_grad();
    }
    let pred_data = tensor![[1.0, 0.0, 0.0]];
    let pred = &pred_data.matmul(&weights).relu();
    println!("Weights after training: {:?}", weights);
    println!("Prediction [1, 0, 0] -> {:?}", pred.borrow().data);
}
开发
要开发elara-math,首先克隆仓库
git clone https://github.com/elaraproject/elara-math
然后,复制预提交githook
cp .githooks/pre-commit .git/hooks/pre-commit && chmod a+x .git/hooks/pre-commit
然后,您就可以开始修改了!
依赖项
~245KB