Skip to main content

runn/regularization/
mod.rs

1pub mod dropout;
2pub mod l1;
3pub mod l2;
4
5use crate::common::matrix::DMat;
6
7#[typetag::serde]
8pub trait Regularization: RegularizationClone + Send + Sync {
9    fn apply(&self, params: &mut [&mut DMat], grads: &mut [&mut DMat]);
10    fn as_any(&self) -> &dyn std::any::Any;
11}
12
13#[typetag::serde]
14impl Regularization for Box<dyn Regularization> {
15    fn apply(&self, params: &mut [&mut DMat], grads: &mut [&mut DMat]) {
16        (**self).apply(params, grads);
17    }
18
19    fn as_any(&self) -> &dyn std::any::Any {
20        (**self).as_any()
21    }
22}
23
24impl RegularizationClone for Box<dyn Regularization> {
25    fn clone_box(&self) -> Box<dyn Regularization> {
26        (**self).clone_box()
27    }
28}
29
30pub trait RegularizationClone {
31    fn clone_box(&self) -> Box<dyn Regularization>;
32}
33
34impl Clone for Box<dyn Regularization> {
35    fn clone(&self) -> Box<dyn Regularization> {
36        self.clone_box()
37    }
38}