#neural-network #machine-learning #feedforward-netowrk

bin+lib puffpastry

基本的 Rust 神经网络框架

1 个不稳定版本

0.1.0 2023 年 7 月 17 日

#468 in 机器学习

MIT 许可证

51KB
1K SLoC

puffpastry

puffpastry 是一个非常基础的具有数学表示一致性重点的前馈神经网络库。它可以用于创建和训练简单的模型。

使用方法

puffpastry 的使用方法与 keras 非常相似 - 堆叠层并对训练数据进行拟合。

学习 XOR

// from_layers(layers: Vec<impl Layer, loss: Loss) -> Model
let mut model : Model<f64> = Model::from_layers(vec![
        Dense::from_size(2, 2, Activation::Sigmoid),
        Dense::from_size(2, 1, Activation::None)
    ],
    Loss::MeanSquaredError
);

let train_inputs = vec![
    Tensor::column(vec![0.0, 0.0]),
    Tensor::column(vec![1.0, 0.0]),
    Tensor::column(vec![0.0, 1.0]),
    Tensor::column(vec![1.0, 1.0]),
];

let train_outputs = vec![
    Tensor::column(vec![0.0]),
    Tensor::column(vec![1.0]),
    Tensor::column(vec![1.0]),
    Tensor::column(vec![0.0]),
];

// fit(&mut self, inputs, outputs, epochs, learning_rate) -> Result
model.fit(train_inputs, train_outputs, 100, 1.2).unwrap();  

// evaluate(&self, input: Tensor) -> Result<Tensor>
model.evaluate(&Tensor::column(vec![1.0, 0.0])).unwrap()
// stdout: Tensor {shape: [1], data: [0.9179620463347642]}

功能

激活函数:[softmax, relu, sigmoid, linear]
损失函数:[categorical cross entropy, mean squared error]
层:[dense]

路线图

  1. 卷积层(一般层重构)[75%]
  2. 文档
  3. 构建 GAN 的工具

依赖关系

~1.4–2MB
~25K SLoC