{"record":{"id":"3775380cd493d30c","repo":"tracel-ai/burn","slug":"should-have-at-least-one-learning-rate","errorCode":null,"errorMessage":"Should have at least one learning rate.","messagePattern":"Should have at least one learning rate\\.","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/burn-optim/src/lr_scheduler/module_lr_scheduler.rs","lineNumber":48,"sourceCode":"        }\n    }\n}\n\nimpl ModuleLearningRate {\n    /// Get the effective learning rate for the given parameter.\n    pub fn lr_from_param(&self, id: ParamId, path: Option<&str>) -> LearningRate {\n        self.groups\n            .iter()\n            .filter_map(|val| val.group.matches(&id, path).then_some(val.lr))\n            .next_back()\n            .expect(\"Should match at least one parameter group.\")\n    }\n\n    /// Get the base learning rate value which's group matches all parameters.\n    pub fn base(&self) -> LearningRate {\n        self.groups\n            .first()\n            .expect(\"Should have at least one learning rate.\")\n            .lr\n    }\n}\n\n#[derive(Config, Debug)]\nstruct LrSchedulerGroupConfig {\n    group: ParamGroup,\n    scheduler: LrSchedulerConfig,\n}\n\n#[derive(new, Clone)]\nstruct LrSchedulerGroup {\n    group: ParamGroup,\n    scheduler: DynLrScheduler,\n}\n\n/// Configuration for a [ModuleLrScheduler].\n#[derive(Config, Debug)]","sourceCodeStart":30,"sourceCodeEnd":66,"githubUrl":"https://github.com/tracel-ai/burn/blob/d16f7ba2ed0d41408189384044cc886fb4c8f957/crates/burn-optim/src/lr_scheduler/module_lr_scheduler.rs#L30-L66","documentation":"Panics in ModuleLearningRate::base when the groups list is empty. base() reads groups.first() to return the learning rate of the catch-all group that matches every parameter, so an optimizer or learning-rate group set constructed without any entries violates the type's invariant that at least one (typically default) group exists. Construct ModuleLearningRate with one or more groups to avoid it.","triggerScenarios":"Thrown at crates/burn-optim/src/lr_scheduler/module_lr_scheduler.rs:48 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Construct ModuleLearningRate with at least one learning-rate group","Check for logic that clears or skips populating `groups`","Use `ModuleLearningRate::from(lr)` to create a single catch-all group"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"d16f7ba2ed0d41408189384044cc886fb4c8f957","analyzedAt":"2026-09-05T13:19:14.260Z","contentChangedAt":"2026-09-05T13:19:14.260Z","schemaVersion":2},"datasetVersion":"2026-09-12T17:17:11.597Z"}