pub mod tools;
pub mod neuralnets;
pub mod multipliers;
use multipliers::{hadamard::DynamicHadamardMultiplier, regular::RegularMultiplier};
use neuralnets::standard::NeuralNetwork2L;
#[inline]
pub fn default(sizes: (usize, usize, usize, usize)) -> NeuralNetwork2L<RegularMultiplier> {
two_layer_regular_cpu(sizes)
}
#[inline]
pub fn two_layer_regular_cpu(sizes: (usize, usize, usize, usize)) -> NeuralNetwork2L<RegularMultiplier> {
NeuralNetwork2L::new(RegularMultiplier::new(), sizes)
}
#[inline]
pub fn two_layer_hadamard_cpu(sizes: (usize, usize, usize, usize)) -> NeuralNetwork2L<DynamicHadamardMultiplier> {
NeuralNetwork2L::new(DynamicHadamardMultiplier::new(), sizes)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_creation_and_forward() {
let mut neuralnet = default((4, 200, 300, 20));
let inputs = vec![1.0, 2.0, 4.2, -1.0];
let output = neuralnet.forward(&inputs);
assert_eq!(20, output.len());
}
}