entrenar/yaml_mode/manifest/
optimizer.rs1use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct OptimizerConfig {
10 pub name: String,
12
13 pub lr: f64,
15
16 #[serde(default, skip_serializing_if = "Option::is_none")]
18 pub weight_decay: Option<f64>,
19
20 #[serde(default, skip_serializing_if = "Option::is_none")]
22 pub betas: Option<Vec<f64>>,
23
24 #[serde(default, skip_serializing_if = "Option::is_none")]
26 pub eps: Option<f64>,
27
28 #[serde(default, skip_serializing_if = "Option::is_none")]
30 pub amsgrad: Option<bool>,
31
32 #[serde(default, skip_serializing_if = "Option::is_none")]
34 pub momentum: Option<f64>,
35
36 #[serde(default, skip_serializing_if = "Option::is_none")]
38 pub nesterov: Option<bool>,
39
40 #[serde(default, skip_serializing_if = "Option::is_none")]
42 pub dampening: Option<f64>,
43
44 #[serde(default, skip_serializing_if = "Option::is_none")]
46 pub alpha: Option<f64>,
47
48 #[serde(default, skip_serializing_if = "Option::is_none")]
50 pub centered: Option<bool>,
51
52 #[serde(default, skip_serializing_if = "Option::is_none")]
54 pub param_groups: Option<Vec<ParamGroup>>,
55}
56
57#[derive(Debug, Clone, Serialize, Deserialize)]
59pub struct ParamGroup {
60 pub params: String,
61 #[serde(default, skip_serializing_if = "Option::is_none")]
62 pub lr: Option<f64>,
63 #[serde(default, skip_serializing_if = "Option::is_none")]
64 pub weight_decay: Option<f64>,
65}