optirs_core/regularizers/
mod.rs1use scirs2_core::ndarray::{Array, Dimension, ScalarOperand};
8use scirs2_core::numeric::{Float, ToPrimitive};
9use std::fmt::Debug;
10
11use crate::error::{OptimError, Result};
12
13pub(crate) fn cast_scalar<A: Float, T: ToPrimitive>(value: T) -> Result<A> {
21 A::from(value).ok_or_else(|| {
22 OptimError::InvalidConfig(
23 "failed to convert a numeric value to the regularizer's scalar type".to_string(),
24 )
25 })
26}
27
28pub trait Regularizer<A, D>
30where
31 A: Float + ScalarOperand + Debug,
32 D: Dimension,
33{
34 fn apply(&self, params: &Array<A, D>, gradients: &mut Array<A, D>) -> Result<A>;
45
46 fn penalty(&self, params: &Array<A, D>) -> Result<A>;
56}
57
58mod activity;
59mod dropconnect;
60mod dropout;
61mod elastic_net;
62mod entropy;
63mod group_lasso;
64mod l1;
65mod l2;
66mod label_smoothing;
67mod manifold;
68mod mixup;
69mod orthogonal;
70mod shakedrop;
71mod spatial_dropout;
72mod spectral_norm;
73mod stochastic_depth;
74mod weight_standardization;
75
76pub use activity::{ActivityNorm, ActivityRegularization};
78pub use dropconnect::DropConnect;
79pub use dropout::Dropout;
80pub use elastic_net::ElasticNet;
81pub use entropy::{EntropyRegularization, EntropyRegularizerType};
82pub use group_lasso::{GroupLasso, SparsityPattern, StructuredSparsity};
83pub use l1::L1;
84pub use l2::L2;
85pub use label_smoothing::LabelSmoothing;
86pub use manifold::ManifoldRegularization;
87pub use mixup::{CutMix, MixUp};
88pub use orthogonal::OrthogonalRegularization;
89pub use shakedrop::ShakeDrop;
90pub use spatial_dropout::{FeatureDropout, SpatialDropout};
91pub use spectral_norm::SpectralNorm;
92pub use stochastic_depth::StochasticDepth;
93pub use weight_standardization::WeightStandardization;