neuralib 0.0.1

A simple Neural Network Library in Rust
Documentation
use crate::neuron::Neuron;
use fastnum::D64;

#[derive(Clone)]
pub struct Layer {
	neurons: Vec<Neuron>,
	input_size: usize
}

impl Layer {
	pub fn new(input_size: usize, layer_size: usize) -> Layer {
		Layer {
			neurons: vec![Neuron::new(input_size); layer_size],
			input_size,
		}
	}

	pub fn activate(&self, inputs: &[D64]) -> crate::error::Result<Vec<D64>> {
		if inputs.len() != self.input_size {
            return Err(crate::error::InputSizeError {
                    inputted: inputs.len(),
                    expected: self.input_size,
                    chain_depth: "Layer".to_owned()
                }.into()
            );
        }

        Ok(self.neurons.iter()
        	.map(|neuron| neuron.activate(inputs).expect("Length was already checked. This should not fail. (Layer)"))
        	.collect())
	}
}