runn 0.1.1

Runn is a feature-rich, easy-to-use library for building, training, and evaluating feed-forward neural networks in Rust
Documentation
pub mod dropout;
pub mod l1;
pub mod l2;

use crate::common::matrix::DMat;

#[typetag::serde]
pub trait Regularization: RegularizationClone + Send + Sync {
    fn apply(&self, params: &mut [&mut DMat], grads: &mut [&mut DMat]);
    fn as_any(&self) -> &dyn std::any::Any;
}

#[typetag::serde]
impl Regularization for Box<dyn Regularization> {
    fn apply(&self, params: &mut [&mut DMat], grads: &mut [&mut DMat]) {
        (**self).apply(params, grads);
    }

    fn as_any(&self) -> &dyn std::any::Any {
        (**self).as_any()
    }
}

impl RegularizationClone for Box<dyn Regularization> {
    fn clone_box(&self) -> Box<dyn Regularization> {
        (**self).clone_box()
    }
}

pub trait RegularizationClone {
    fn clone_box(&self) -> Box<dyn Regularization>;
}

impl Clone for Box<dyn Regularization> {
    fn clone(&self) -> Box<dyn Regularization> {
        self.clone_box()
    }
}