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}