runn/regularization/
mod.rs1pub 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}