use super::QnSpsaConfig;
use burn::tensor::Tensor;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct QnSpsaState {
pub version: u32,
pub config: QnSpsaConfig,
pub parameters: usize,
pub iteration: u64,
pub metric: Vec<f64>,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct QnSpsaStepReport {
pub iteration: u64,
pub learning_rate: f64,
pub perturbation: f64,
pub accepted: bool,
pub loss_estimate: f64,
pub loss_before: Option<f64>,
pub loss_proposed: Option<f64>,
pub proposed_step_norm: f64,
pub loss_evaluations: usize,
pub fidelity_evaluations: usize,
}
#[derive(Debug)]
pub struct QnSpsaStep {
pub parameters: Tensor<1>,
pub report: QnSpsaStepReport,
}