use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct ModelConfig {
pub layers: Vec<LayerConfig>,
}
pub enum LayerConfig {
Dense(DenseConfig),
Conv2D(Conv2DConfig),
LayerNorm(LayerNormConfig),
BatchNorm(BatchNormConfig),
Dropout(DropoutConfig),
MaxPool2D(MaxPool2DConfig),
pub struct DenseConfig {
pub input_dim: usize,
pub output_dim: usize,
#[serde(skip_serializing_if = "Option::is_none")]
pub activation: Option<String>,
pub struct Conv2DConfig {
pub in_channels: usize,
pub out_channels: usize,
pub kernel_size: usize,
pub stride: usize,
pub padding_mode: String,
pub struct LayerNormConfig {
pub normalizedshape: usize,
pub eps: f64,
pub struct BatchNormConfig {
pub num_features: usize,
pub momentum: f64,
pub struct DropoutConfig {
pub p: f64,
pub struct MaxPool2DConfig {
pub padding: usize,