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
//! _A dead simple neural network built as a learning exercise._ //! //! # Getting Started //! ``` //! use artha::{ //! NeuralNetwork, //! neural_net::{ //! normaize_val, //! mean_loss, //! find_max, //! } //! }; //! use ndarray::array; //! fn main() { //! let mut xs = array![[2.,9.],[1.,5.],[3.,6.]]; //! normaize_val(find_max(&xs), &mut xs); //! let mut ys = array![[92.], [86.], [89.]]; //! normaize_val(vec![100.], &mut ys); //! let mut nn = NeuralNetwork::new(2,1,vec![3]); //! let predicted = nn.train(&xs, &ys, 10000); //! let loss = mean_loss(&ys, &predicted); //! //! use artha::logln; //! logln!("Input: ", xs); //! logln!("Actual Output: ", ys); //! logln!("Predicted Output: ", predicted); //! logln!("Loss: ", loss); //! } //! ``` //! //! This program is a direct translation of <https://dev.to/shamdasani/build-a-flexible-neural-network-with-backpropagation-in-python> //! into rust. //! //! Also checko 3Blue1Browns's excellent series on Neural Network <https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi> //! //! I found this network to be significantly slower than the tutorial. Perhaps ndarray is not as fast as numpy or //! perhaps my rust code is not optimiz. I'll definitely look into it. //! //! Besides optimization, I am also hoping to implmenting a network that recognized handwritten digits and who knows what else from there. //! But for now, this is a fairly inaccurate rookie version that I could build on my own. //! //! - If you have any questions or suggestions, feel free to submit issues, or contact me in other ways. //! - If you found my sub-par rust skills offensive, please do provide some constructive criticism. //! mod log_macros; pub mod neural_net; pub use self::neural_net::NeuralNetwork;