vexus 4.0.0

A neural network builder and trainer struct to make your own AI models.
Documentation
use vexus::{NeuralNetwork, Sigmoid};

fn main() {
    // Create a neural network with 2 inputs, one hidden layer of 4 neurons, and 1 output
    let mut nn = NeuralNetwork::new(vec![2, 4, 1], 0.1, Box::new(Sigmoid));

    // Training data for XOR
    let training_data = vec![
        (vec![0.0, 0.0], vec![0.0]),
        (vec![0.0, 1.0], vec![1.0]),
        (vec![1.0, 0.0], vec![1.0]),
        (vec![1.0, 1.0], vec![0.0]),
    ];

    // Train the network
    for _ in 0..1000000 {
        for (inputs, expected) in &training_data {
            let _outputs = nn.forward(inputs);
            nn.backpropagate(expected);
        }
    }

    // Test the network
    for (inputs, expected) in &training_data {
        let outputs = nn.forward(inputs);
        println!(
            "Input: {:?}, Expected: {:?}, Got: {:.4}",
            inputs, expected[0], outputs[0]
        );
    }
}