Skip to main content

zsfm_ttm/
config.rs

1use anyhow::{Context, Result};
2use serde::Deserialize;
3
4#[derive(Debug, Clone, Deserialize)]
5pub struct TtmConfig {
6    pub context_length: usize,
7    pub prediction_length: usize,
8    pub patch_length: usize,
9    pub patch_stride: usize,
10    pub d_model: usize,
11    pub num_layers: usize,
12    pub decoder_d_model: usize,
13    pub decoder_num_layers: usize,
14    pub expansion_factor: usize,
15    pub adaptive_patching_levels: usize,
16    pub num_patches: usize,
17    /// "std", "mean", or "none"
18    #[serde(default = "default_scaling")]
19    pub scaling: String,
20    #[serde(default)]
21    pub gated_attn: bool,
22    #[serde(default)]
23    pub norm_eps: f64,
24}
25
26fn default_scaling() -> String { "std".into() }
27
28impl TtmConfig {
29    pub fn from_json(s: &str) -> Result<Self> {
30        serde_json::from_str(s).context("parse TtmConfig")
31    }
32}