sproutml

Crates.iosproutml
lib.rssproutml
version0.1.1
sourcesrc
created_at2024-04-17 15:41:47.997982
updated_at2024-04-17 15:48:32.118076
descriptionA simple Machine Learning Library built in Rust
homepage
repositoryhttps://github.com/Chigo042823/Sprout
max_upload_size
id1211504
size76,496
Altheo Pacheco (Chigo042823)

documentation

README

Sprout Logo

About

Sprout is a Simple Machine Learning library in Rust made with no pre-existing ML or linear algebra libraries. I made Sprout to get a better understanding of ML concepts.

Key Features

  • Fully Connected Layers
  • Convolution Layers
  • Mini-Batch Gradient Descent
  • Normalizations
  • Model Saving/Loading to JSON

How To Use

Sprout uses a Vec of the included Layer struct which is passed into the Network struct as shown here:
use Sprouts::{Layer::{Layer, LayerType}, network::Network, activation::ActivationFunction::*, loss_function::LossType::*}

let layers = vec![
    Layer::dense([2, 3], Sigmoid),
    Layer::dense([3, 1], Sigmoid),
];

// Network::new(layers, learning_rate, batch_size, loss_function);
let nn = Network::new(layers, 0.2, 1, MSE);

//Prints network's loss and epoch progress in the terminal
nn.dense_train(true);

//data: Vec<[Inputs, Outputs]>
let data: Vec<[Vec<f64>; 2]> = vec![
    [vec![1.0, 0.0], vec![0.0]],
    [vec![0.0, 0.0], vec![1.0]],
    [vec![1.0, 1.0], vec![1.0]],
    [vec![0.0, 1.0], vec![0.0]],
];  

//dense_train(data, epochs)
nn.dense_train(data.clone(), 10000);

for i in 0..data.len() {
    println!("Input: {:?} || Output: {:?} || Target: {:?}",data[i][0].clone(), nn.dense_forward(data[i][0].clone()), data[i][1].clone());
}

As of now the only supported layers are conv and dense layers, pooling layers are next on the agenda.

will expound readme soon...

License

This project is licensed under the MIT License.

Commit count: 31

cargo fmt