Views
No views yet
Input: HR (1Hz) + SaO2 (1Hz) → (B, 2, 900) [15 min ventanas]
1. TCN Encoder (dilataciones 1,2,4,8)
Conv1d-BN-ReLU → Residual blocks → (B, 256, T')
2. BiGRU (2 capas, hidden=128)
Forward + Backward → (B, T', 256)
3. Temporal Self-Attention (4 heads)
Lightweight attention → (B, T', 256)
4. Multi-scale Pooling
GlobalAvgPool + GlobalMaxPool → (B, 512)
5. Classifier
LayerNorm → Dropout → Linear(512→256→2)
Output: Logits binarios (Normal vs Apnea/Hipopnea)pip install -r requirements.txt.mat con las siguientes variables:HR: Frecuencia cardíaca (1 Hz), shape (N,) o (N,1)SaO2 o SaO2: Saturación de oxígeno (1 Hz, resolución 1%), shape (N,)Target03: Etiquetas (0=normal, !=0=apnea/hipopnea), shape (N,)OXStat: Calidad de señal (0=buena calidad, !=0=artefacto), shape (N,)1python train_sleep_apnea.py \
2 --data_dir /ruta/a/archivos/mat \
3 --output_dir /ruta/a/salida \
4 --epochs 100 \
5 --batch_size 32 \
6 --lr 0.001 \
7 --window_size 900 \
8 --stride 60 \
9 --seed 421python inference_sleep_apnea.py \
2 --data_dir /ruta/a/test/mat \
3 --model_path /ruta/a/salida/best_model.pt \
4 --output_dir /ruta/a/resultados \
5 --threshold 0.5 \
6 --batch_size 64| Archivo | Descripción |
|---|---|
best_model.pt | Mejor modelo (según F1 en validación) |
training_curves.png | Evolución de loss, accuracy, sensibilidad, especificidad |
confusion_matrix.png | Matriz de confusión en test |
roc_pr_curves.png | Curvas ROC y Precision-Recall |
final_report.json | Métricas completas en formato JSON |
| Parámetro | Default | Descripción |
|---|---|---|
window_size | 900 | Tamaño ventana (15 min @ 1Hz) |
stride | 60 | Solapamiento (1 min) |
label_shift | 60 | Shift etiquetas para delay desaturación (60s) |
focal_gamma | 2.0 | Factor focal loss |
lr | 1e-3 | Learning rate AdamW |
dropout | 0.4 | Regularización |
patience | 15 | Early stopping (épocas sin mejora) |
1from transformers import AutoModelForCausalLM, AutoTokenizer
2
3model_id = 'Gastpm/sleep-apnea-shhs-v2'
4tokenizer = AutoTokenizer.from_pretrained(model_id)
5model = AutoModelForCausalLM.from_pretrained(model_id)AutoModelForCausalLM with the appropriate AutoModel class.