astrai 2.2.0

A pretty bad neural network library
Documentation
#[cfg(test)]
mod tests {
    use super::super::*;

    #[test]
    fn test_basic_network() {
        let mut network = Network::new(2, 1, None, None);

        network.add_connection((0, 0), (1, 0), 0.75);
        network.add_connection((0, 1), (1, 0), 0.25);

        let test_inputs = vec![0.36, 0.54];
        let manual_calculation = sigmoid(test_inputs[0] * 0.75 + test_inputs[1] * 0.25);

        let output = network.activate(test_inputs, false);

        assert_eq!(output[0], manual_calculation);
    }

    #[test]
    fn test_network_biases() {
        let mut network = Network::new(2, 1, None, None);

        network.add_connection((0, 0), (1, 0), 0.75);
        network.add_connection((0, 1), (1, 0), 0.25);

        network.layers[1].bias[0] = 0.5;

        let test_inputs = vec![0.36, 0.54];
        let manual_calculation = sigmoid(test_inputs[0] * 0.75 + test_inputs[1] * 0.25 + 0.5);

        let output = network.activate(test_inputs, false);

        assert_eq!(output[0], manual_calculation);
    }

    #[test]
    fn test_simple_network_with_extra_neuron() {
        let mut network = Network::new(2, 1, Some(vec![1]), None);

        network.add_connection((0, 0), (1, 0), 1f64);
        network.add_connection((0, 1), (1, 0), 1f64);
        network.add_connection((1, 0), (2, 0), 1f64);

        assert_eq!(
            network.activate(vec![1f64, 1f64], false)[0],
            sigmoid(sigmoid(1f64 + 1f64))
        );
    }
}