- Fixed PSO budget calculation bug in ml/src/hyperopt/optimizer.rs - Root cause: Division by n_particles in sequential execution - Now correctly calculates max_iters = remaining_trials (no division) - Result: 50 trials complete instead of 23 (100% vs 46%) - Added comprehensive DQN hyperopt results analysis - 39/50 trials analyzed across 2 RunPod deployments - Best hyperparameters identified: LR 4.89e-5 (ultra-low) - Created DQN_HYPEROPT_RESULTS_SUMMARY.md with expert validation - GitLab CI/CD pipeline operational (48 lines fixed) - Fixed YAML syntax errors (unquoted colons) - All 7 jobs validated and working - Warning cleanup complete (136 → 0 warnings) - Removed 143 lines dead code - Fixed visibility, unused imports, Debug traits - Archived Wave D reports to docs/archive/ - 8 early stopping reports moved - Root directory cleaned up 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
27 lines
755 B
Rust
27 lines
755 B
Rust
use candle_core::{Device, safetensors};
|
|
use std::collections::HashMap;
|
|
|
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
let model_path = "/tmp/dqn_final_model.safetensors";
|
|
|
|
// Load SafeTensors
|
|
let device = Device::Cpu;
|
|
let tensors: HashMap<String, candle_core::Tensor> = safetensors::load(model_path, &device)?;
|
|
|
|
println!("=== DQN Model Tensor Structure ===");
|
|
println!("Total tensors: {}", tensors.len());
|
|
println!("\nTensor names and shapes:");
|
|
|
|
let mut names: Vec<_> = tensors.keys().collect();
|
|
names.sort();
|
|
|
|
for name in names {
|
|
if let Some(tensor) = tensors.get(name) {
|
|
let shape = tensor.shape();
|
|
println!(" {} {:?}", name, shape.dims());
|
|
}
|
|
}
|
|
|
|
Ok(())
|
|
}
|