nn 0.1.6

A multilayer feedforward backpropagation neural network library
Documentation
extern crate nn;
extern crate time;

use nn::{NN, HaltCondition, LearningMode};

#[test]
fn xor_4layers() {
    // create examples of the xor function
    let examples = [
        (vec![0f64, 0f64], vec![0f64]),
        (vec![0f64, 1f64], vec![1f64]),
        (vec![1f64, 0f64], vec![1f64]),
        (vec![1f64, 1f64], vec![0f64]),
    ];

    // create a new neural network
    let mut net1 = NN::new(&[2,3,3,1]);

    // train the network
    net1.train(&examples)
        .log_interval(Some(1000))
        .halt_condition( HaltCondition::MSE(0.01) )
        .learning_mode( LearningMode::Incremental )
        .momentum(0.1)
        .go();

    // make sure json encoding/decoding works as expected
    let json = net1.to_json();
    let net2 = NN::from_json(&json);

    // test the trained network
    for &(ref inputs, ref outputs) in examples.iter() {
        let results = net2.run(inputs);
        let (result, key) = (results[0].round(), outputs[0]);
        assert!(result == key);
    }
}