use crate::matrix::Matrix;
use crate::layer::{Map, Layer};
pub struct Network
{
pub layers: Vec<Layer>
}
impl Network
{
pub fn new() -> Self
{
let layers: Vec<Layer> = Vec::new();
Self { layers }
}
pub fn append_layer(&mut self, map: Map)
{
self.layers.push(Layer::new(map))
}
pub fn feedforward(&mut self, input: Matrix) -> Matrix
{
let mut x: Matrix = input;
for i in 0..self.layers.len()
{
assert!((x.rows == self.layers[i].x.rows) && (x.cols == 1), "Input has incorrect dimensions");
self.layers[i].x = x;
x = self.layers[i].feedforward();
}
x
}
}