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();
// }
// }
// }