entrenar/yaml_mode/manifest/
scheduler.rs1use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct SchedulerConfig {
10 pub name: String,
12
13 #[serde(default, skip_serializing_if = "Option::is_none")]
15 pub warmup: Option<WarmupConfig>,
16
17 #[serde(rename = "T_max", default, skip_serializing_if = "Option::is_none")]
19 pub t_max: Option<usize>,
20
21 #[serde(default, skip_serializing_if = "Option::is_none")]
23 pub eta_min: Option<f64>,
24
25 #[serde(default, skip_serializing_if = "Option::is_none")]
27 pub step_size: Option<usize>,
28
29 #[serde(default, skip_serializing_if = "Option::is_none")]
31 pub gamma: Option<f64>,
32
33 #[serde(default, skip_serializing_if = "Option::is_none")]
35 pub mode: Option<String>,
36
37 #[serde(default, skip_serializing_if = "Option::is_none")]
39 pub factor: Option<f64>,
40
41 #[serde(default, skip_serializing_if = "Option::is_none")]
43 pub patience: Option<usize>,
44
45 #[serde(default, skip_serializing_if = "Option::is_none")]
47 pub threshold: Option<f64>,
48
49 #[serde(default, skip_serializing_if = "Option::is_none")]
51 pub max_lr: Option<f64>,
52
53 #[serde(default, skip_serializing_if = "Option::is_none")]
55 pub pct_start: Option<f64>,
56
57 #[serde(default, skip_serializing_if = "Option::is_none")]
59 pub anneal_strategy: Option<String>,
60
61 #[serde(default, skip_serializing_if = "Option::is_none")]
63 pub div_factor: Option<f64>,
64
65 #[serde(default, skip_serializing_if = "Option::is_none")]
67 pub final_div_factor: Option<f64>,
68}
69
70#[derive(Debug, Clone, Serialize, Deserialize)]
72pub struct WarmupConfig {
73 #[serde(default, skip_serializing_if = "Option::is_none")]
75 pub steps: Option<usize>,
76
77 #[serde(default, skip_serializing_if = "Option::is_none")]
79 pub ratio: Option<f64>,
80
81 #[serde(default, skip_serializing_if = "Option::is_none")]
83 pub start_lr: Option<f64>,
84}