micrograd_rs/
layer.rs

1use crate::{neuron::Neuron, value::Value};
2
3#[derive(Clone)]
4pub struct Layer {
5    neurons: Vec<Neuron>,
6}
7
8impl Layer {
9    pub fn new(input_count: usize, output_count: usize) -> Layer {
10        Layer {
11            neurons: (0..output_count)
12                .map(|_| Neuron::new(input_count))
13                .collect(),
14        }
15    }
16
17    pub fn forward(&self, xs: &Vec<Value>) -> Vec<Value> {
18        self.neurons.iter().map(|n| n.forward(xs)).collect()
19    }
20
21    pub fn parameters(&self) -> Vec<Value> {
22        self.neurons.iter().flat_map(|n| n.parameters()).collect()
23    }
24}