native_neural_network 0.3.1

Lib no_std Rust for native neural network (.rnn)
Documentation
use super::NeuralNetwork;

#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct NetworkStats {
    pub layer_count: usize,
    pub input_size: usize,
    pub output_size: usize,
    pub total_weights: usize,
    pub total_biases: usize,
}

pub fn network_stats(network: &NeuralNetwork<'_>) -> Option<NetworkStats> {
    let input_size = *network.layers.first()?;
    let output_size = *network.layers.last()?;

    Some(NetworkStats {
        layer_count: network.layer_count(),
        input_size,
        output_size,
        total_weights: network.weights.len(),
        total_biases: network.biases.len(),
    })
}

pub fn validate_network_parts(layers: &[usize], weights: &[f32], biases: &[f32]) -> bool {
    let expected_w = NeuralNetwork::expected_weights_count(layers);
    let expected_b = NeuralNetwork::expected_biases_count(layers);
    match (expected_w, expected_b) {
        (Some(w), Some(b)) => w == weights.len() && b == biases.len(),
        _ => false,
    }
}