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,
}
}