native_neural_network_std 0.2.1

Ergonomic std wrapper for the `native_neural_network` crate (no_std) — std-friendly re-exports and utilities.
Documentation
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum LossKindStd {
    Mse,
    Mae,
    Huber { delta: f32 },
}

impl From<LossKindStd> for native_neural_network::losses::LossKind {
    fn from(k: LossKindStd) -> Self {
        match k {
            LossKindStd::Mse => native_neural_network::losses::LossKind::Mse,
            LossKindStd::Mae => native_neural_network::losses::LossKind::Mae,
            LossKindStd::Huber { delta } => {
                native_neural_network::losses::LossKind::Huber { delta }
            }
        }
    }
}

#[derive(Debug)]
pub enum LossesStdError {
    LossError,
}

impl From<native_neural_network::losses::LossError> for LossesStdError {
    fn from(_e: native_neural_network::losses::LossError) -> Self {
        LossesStdError::LossError
    }
}

pub fn loss_and_gradient(
    kind: LossKindStd,
    preds: &[f32],
    targets: &[f32],
    out_grad: &mut [f32],
) -> Result<f32, LossesStdError> {
    let upstream: native_neural_network::losses::LossKind = kind.into();
    native_neural_network::losses::loss_and_gradient(upstream, preds, targets, out_grad)
        .map_err(|e| e.into())
}

pub fn reduce_sum(slice: &[f32]) -> f32 {
    native_neural_network::losses::reduce_sum_f32(slice)
}

pub fn reduce_mean(slice: &[f32]) -> Option<f32> {
    native_neural_network::losses::reduce_mean_f32(slice)
}

impl core::fmt::Display for LossesStdError {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        write!(f, "LossesStdError::{:?}", self)
    }
}

impl std::error::Error for LossesStdError {}