#[derive(Debug)]
pub enum InitStdError {
InvalidShape,
ShapeMismatch,
NonFinite,
}
impl From<native_neural_network::initializers::InitError> for InitStdError {
fn from(e: native_neural_network::initializers::InitError) -> Self {
match e {
native_neural_network::initializers::InitError::InvalidShape => {
InitStdError::InvalidShape
}
native_neural_network::initializers::InitError::ShapeMismatch => {
InitStdError::ShapeMismatch
}
native_neural_network::initializers::InitError::NonFinite => InitStdError::NonFinite,
}
}
}
pub use native_neural_network::initializers::InitKind;
pub fn expected_parameter_counts(layers: &[usize]) -> Option<(usize, usize)> {
native_neural_network::initializers::expected_parameter_counts(layers)
}
pub fn initialize_parameters(
layers: &[usize],
weights: &mut [f32],
biases: &mut [f32],
init_kind: InitKind,
seed: u64,
) -> Result<(), InitStdError> {
native_neural_network::initializers::initialize_parameters_f32(
layers, weights, biases, init_kind, seed,
)
.map_err(|e| e.into())
}
impl core::fmt::Display for InitStdError {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
write!(f, "InitStdError::{:?}", self)
}
}
impl std::error::Error for InitStdError {}