vinyana@0.3.0 Build Statuscodecov

vinyana - stands for mind in pali language.

Goal

The goal of this project is to create a neural network library that is easy to use and understand in rust.

Usage

```rust // In this example we will teach our NeuralNetwork to solve XOR problem

// we will create a 3 layer neural network with 2 inputs 2 hidden and 1 output node

use vinyana::{NeuralNetwork, ActivationFunction};

fn main() { let mut nn = NeuralNetwork::new(vec![2, 2, 1]);

nn.set_learning_rate(0.01); // default is 0.01 but you can change it
nn.set_activation_function(vinyana::ActivationFunction::Relu); // default is Sigmoid but you can change it

// We will train this network with 4 scenarios of XOR problem
let scenarios = vec![
    (vec![1.0, 1.0], vec![0.0f32]),
    (vec![0.0, 1.0], vec![1.0]),
    (vec![1.0, 0.0], vec![1.0]),
    (vec![0.0, 0.0], vec![0.0]),
];

let mut rng = thread_rng();
for _ in 0..300000 {
    let random = rng.gen_range(0..4) as usize;
    let (train_data, target_data) = scenarios.get(random).unwrap();

    // we will pick a random scenario from the dataset and feed it to the network with the expected target
    nn.train(train_data.clone(), target_data.clone())
}

// we can store our trained model and play with it later
nn.save(Path::new("xor_model.nn")).unwrap();

} ```

```rust // Load your model from file

let nn = NeuralNetwork::load(Path::new("xor_model.nn")).unwrap();

let result = nn.predict(vec![1.0, 1.0]); println!("{:?}", result); ```