2个版本

0.1.1 2024年6月11日
0.1.0 2024年6月9日

#227 in 机器学习

Download history 153/week @ 2024-06-04 201/week @ 2024-06-11 27/week @ 2024-06-18

67 每月下载次数

MIT许可证

25KB
288

mynn

crates.io Released API docs MIT licensed

一个爱好者级的no-std神经网络库。

说明

这是一个小型库(目前约200行代码,不包括文档注释和辅助宏),我最初是在午餐时间创造的,当时我试图在Rust的类型系统中表示神经网络的形状,结果是,我能够将所有向量都转换为固定大小的数组,并允许神经网络无std,在理论上可用于微控制器和嵌入式平台。

请看这个 示例,展示了在ATtiny85上运行的预训练模型近似XOR。

安装

命令行

cargo add mynn 

Cargo.toml

mynn = "0.1.1" 

要使用所有操作中的f32,请提供f32标志

mynn = { version = "0.1.1", features = ["f32"] }

示例

简短的示例近似XOR门输出。

use mynn::make_network;
use mynn::activations::SIGMOID;

fn main() {
    let inputs = [[0.0, 0.0],  [0.0, 1.0], [1.0, 0.0],  [1.0, 1.0]];
    let targets = [[0.0], [1.0], [1.0], [0.0]];


    let mut network = make_network!(2, 3, 1);
    network.train(0.5, inputs, targets, 10_000, &SIGMOID);


    println!("0 and 0: {:?}", network.predict([0.0, 0.0], &SIGMOID));
    println!("1 and 0: {:?}", network.predict([1.0, 0.0], &SIGMOID));
    println!("0 and 1: {:?}", network.predict([0.0, 1.0], &SIGMOID));
    println!("1 and 1: {:?}", network.predict([1.0, 1.0], &SIGMOID));
}

依赖项

~655KB
~15K SLoC