xor/
xor.rs

1use vexus::{NeuralNetwork, Sigmoid};
2
3fn main() {
4    // Create a neural network with 2 inputs, one hidden layer of 4 neurons, and 1 output
5    let mut nn = NeuralNetwork::new(vec![2, 4, 1], 0.1, Box::new(Sigmoid));
6
7    // Training data for XOR
8    let training_data = vec![
9        (vec![0.0, 0.0], vec![0.0]),
10        (vec![0.0, 1.0], vec![1.0]),
11        (vec![1.0, 0.0], vec![1.0]),
12        (vec![1.0, 1.0], vec![0.0]),
13    ];
14
15    // Train the network
16    for _ in 0..1000000 {
17        for (inputs, expected) in &training_data {
18            let _outputs = nn.forward(inputs);
19            nn.backpropagate(expected);
20        }
21    }
22
23    // Test the network
24    for (inputs, expected) in &training_data {
25        let outputs = nn.forward(inputs);
26        println!(
27            "Input: {:?}, Expected: {:?}, Got: {:.4}",
28            inputs, expected[0], outputs[0]
29        );
30    }
31}