rust_neural_network/
lib.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#![allow(unused_imports)]
#![allow(dead_code)]

use std::{vec, collections::HashMap, borrow::Borrow, time::{Duration, Instant}};

use neural_network::{InputName, OutputName};

use std::sync::mpsc::Sender;

pub mod neural_network;
use crate::neural_network::{Input, Output, NeuralNetwork,NEURAL_NETWORK_MANAGER};

const TICK_SPEED: u32 = 1;

fn main() {
    println!("Begin");

    /* let neural_network_manager = NeuralNetworkManager::new(); */

    let inputs: Vec<Input> = vec![
        Input::new(
            InputName::X,
            vec![1., 3.],
            vec![1, 2],
        ),
        Input::new(
            InputName::Y,
            vec![2.],
            vec![1],
        ),
    ];
    let outputs: Vec<Output> = vec![
        Output::new(OutputName::Result),
    ];
    
    let mut neural_network = init(&inputs, outputs.len());
    // tick_manager(&mut neural_network, inputs);
    
    println!("End");
}

pub fn init(inputs: &Vec<Input>, output_count: usize) -> NeuralNetwork {
    
    let mut neural_network = NeuralNetwork::default();
    neural_network.build(inputs, output_count);

    neural_network
}

// pub fn tick_manager(neural_network: &mut NeuralNetwork, inputs: Vec<Input>) {

//     let time_start = Instant::now();

//     let timer = Timer::new();
//     let ticks = timer.interval_ms(TICK_SPEED).iter();
    
//     for (tick, _) in ticks.enumerate() {

//         if tick > 500 {
//             break;
//         }

//         print!("Processing tick: ");
//         println!("{}", tick);

//         let time_elapsed = time_start.elapsed();
//         println!("{:?}", time_elapsed);

//         neural_network.forward_propagate(&inputs);

//         if tick % 10 == 0 {

//             neural_network.mutate();
//             neural_network.write_to_file();
//         }
//     }
// }