concision_neural/types/
hyperparameters.rs

1/*
2    Appellation: hyperparameters <module>
3    Contrib: @FL03
4*/
5#[derive(Clone, Copy, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
6#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
7pub struct KeyValue<K = String, V = f64> {
8    pub key: K,
9    pub value: V,
10}
11
12#[derive(
13    Clone,
14    Copy,
15    Debug,
16    Default,
17    Eq,
18    Hash,
19    Ord,
20    PartialEq,
21    PartialOrd,
22    scsys_derive::VariantConstructors,
23    strum::AsRefStr,
24    strum::Display,
25    strum::EnumCount,
26    strum::EnumIs,
27    strum::VariantArray,
28    strum::VariantNames,
29)]
30#[cfg_attr(
31    feature = "serde",
32    derive(serde::Deserialize, serde::Serialize),
33    serde(rename_all = "snake_case", untagged)
34)]
35#[strum(serialize_all = "snake_case")]
36pub enum Hyperparameters {
37    Decay,
38    #[default]
39    LearningRate,
40    Momentum,
41    BatchSize,
42}
43
44impl core::str::FromStr for Hyperparameters {
45    type Err = strum::ParseError;
46
47    fn from_str(s: &str) -> Result<Self, Self::Err> {
48        match s {
49            "decay" => Ok(Hyperparameters::Decay),
50            "learning_rate" => Ok(Hyperparameters::LearningRate),
51            "momentum" => Ok(Hyperparameters::Momentum),
52            _ => Err(strum::ParseError::VariantNotFound),
53        }
54    }
55}