use vexus::{NeuralNetwork, Sigmoid};
fn main() {
let mut nn = NeuralNetwork::new(vec![2, 4, 1], 0.1, Box::new(Sigmoid));
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]),
];
for _ in 0..1000000 {
for (inputs, expected) in &training_data {
let _outputs = nn.forward(inputs);
nn.backpropagate(expected);
}
}
for (inputs, expected) in &training_data {
let outputs = nn.forward(inputs);
println!(
"Input: {:?}, Expected: {:?}, Got: {:.4}",
inputs, expected[0], outputs[0]
);
}
}