Skip to content

Instantly share code, notes, and snippets.

@robintux
Last active May 17, 2026 14:48
Show Gist options
  • Select an option

  • Save robintux/728e0041261139411f6bf70d59486785 to your computer and use it in GitHub Desktop.

Select an option

Save robintux/728e0041261139411f6bf70d59486785 to your computer and use it in GitHub Desktop.
# =============================================================================
# 1. DEFINICIÓN DE CONFIGURACIONES A EXPERIMENTAR
# =============================================================================
experiment_configs = [
    # Configuración 1: Línea Base (Baseline)
    # Objetivo: Establecer un punto de referencia mínimo viable sin trucos.
    {
        "name": "Baseline_ReLU",
        "hidden_units": [64, 32],
        "activations": "relu",
        "dropout_rates": 0.0,
        "use_batchnorm": False,
        "kernel_regularizer": None,
        "kernel_initializer": "he_normal",
        "optimizer": keras.optimizers.Adam(learning_rate=0.001),
        "loss": "mse",
        "metrics": ["mae"],
        "seed": 42
    },

    # Configuración 2: Regularización L2 (Ridge)
    # Objetivo: Evitar que los pesos crezcan demasiado, suavizando la función de decisión.
    # Útil si sospechas de multicolinealidad en las features de entrada.
    {
        "name": "Regularization_L2",
        "hidden_units": [128, 64, 32],
        "activations": "relu",
        "dropout_rates": 0.0,
        "use_batchnorm": False,
        "kernel_regularizer": keras.regularizers.l2(0.001),
        "kernel_initializer": "he_normal",
        "optimizer": keras.optimizers.Adam(learning_rate=0.001),
        "loss": "mse",
        "metrics": ["mae"],
        "seed": 42
    },

    # Configuración 3: Dropout Agresivo + BatchNorm
    # Objetivo: Maximizar la generalización en un dataset pequeño o ruidoso.
    # BatchNorm estabiliza la distribución de entradas a cada capa.
    {
        "name": "BN_Dropout_Agg",
        "hidden_units": [256, 128, 64],
        "activations": "relu",
        "dropout_rates": [0.3, 0.3, 0.5],
        "use_batchnorm": True,
        "kernel_regularizer": None,
        "kernel_initializer": "he_normal",
        "optimizer": keras.optimizers.Adam(learning_rate=0.001),
        "loss": "mse",
        "metrics": ["mae"],
        "seed": 42
    },

    # Configuración 4: Arquitectura "Deep & Narrow" con ELU
    # Objetivo: Probar si una arquitectura más profunda con activaciones que evitan el "dying ReLU problem" (ELU)
    # captura mejor relaciones no lineales complejas en los datos psicológicos.
    {
        "name": "Deep_ELU_Huber",
        "hidden_units": [64, 32, 16, 8],
        "activations": "elu",
        "dropout_rates": 0.1,
        "use_batchnorm": False,
        "kernel_regularizer": keras.regularizers.l2(0.0001),
        "kernel_initializer": "he_normal",
        "optimizer": keras.optimizers.Adam(learning_rate=0.0005),
        "loss": "huber",
        "metrics": ["mae"],
        "seed": 42
    },

    # Configuración 5: Comparativa de Optimizadores (SGD vs Adam)
    # Objetivo: Verificar si Adam converge a un mínimo más generalizable que SGD con Momentum.
    # SGD suele encontrar mínimos más planos (mejor generalización) pero es más difícil de tuneear.
    {
        "name": "SGD_Momentum_BN",
        "hidden_units": [128, 64],
        "activations": "relu",
        "dropout_rates": 0.2,
        "use_batchnorm": True,
        "kernel_regularizer": None,
        "kernel_initializer": "he_normal",
        "optimizer": keras.optimizers.SGD(learning_rate=0.01, momentum=0.9),
        "loss": "mse",
        "metrics": ["mae"],
        "seed": 42
    },

    # Configuración 6: Ensemble-style (Modelo Ancho)
    # Objetivo: Un modelo muy ancho puede actuar como un ensemble de sub-redes más pequeñas.
    {
        "name": "Wide_L2_Drop",
        "hidden_units": [512, 256],
        "activations": "relu",
        "dropout_rates": 0.4,
        "use_batchnorm": False,
        "kernel_regularizer": keras.regularizers.l2(0.001),
        "kernel_initializer": "he_normal",
        "optimizer": keras.optimizers.Adam(learning_rate=0.001),
        "loss": "mse",
        "metrics": ["mae"],
        "seed": 42
    }
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment