v3.2: Fix 7 bugs/redundancies (encoder mismatch, dead code, duplication, scheduler)
#1
by KD099 - opened
v3.2 Bugfix & Cleanup Release
Critical Fix
- #9 Encoder mismatch (train/inference): Training used
LearnableTemporalEncoderbut inference usedDeterministicEncoder. Encoder weights were never saved. Now saves encoder alongside model checkpoint and loads it at inference. This was silently degrading accuracy at every evaluation.
Bug Fixes
- #2 Neuron search dead code: Search results went nowhere —
ENSEMBLE_CONFIGSwas hardcoded. Now the pipeline rebuildsENSEMBLE_CONFIGSfrom the top-K search results. - #6 Tautological SNR verification:
generate_dataset_v2()reconstructed SNR fromnoisy - clean, which is guaranteed to match by construction. Removed the redundant computation. - #7 Scheduler miscalibration:
MAX_EPOCHS=200but models converge at ~40-60; cosine schedule was at 75% LR when early stopping fired. Changed toMAX_EPOCHS=100,EARLY_STOP_PATIENCE=35. Early stopping now tracksval_accuracyinstead ofval_loss(loss fluctuates at 99%+ accuracy).NEURON_SEARCH_EPOCHSincreased from 20→40.
Code Deduplication
- #3 Noise generation 4× duplication: Added
generate_noise_sample()tonoise_sources.pyas single source of truth. All 5 functions ingenerator.pynow call it. - #4 Denoising dispatch 4× duplication: Added
denoise_signal()anddenoise_batch()tonqr_snn/denoising/__init__.py. Used by dataset, inference, selector, and pipeline. - #5 Legacy API: Annotated with deprecation notes, slimmed by noise refactor.
Files Changed (10)
nqr_snn/config.py— hyperparameter fixesnqr_snn/data/noise_sources.py— newgenerate_noise_sample()nqr_snn/data/generator.py— uses noise helper, removes SNR tautologynqr_snn/data/dataset.py— uses denoise helpernqr_snn/denoising/__init__.py— newdenoise_signal()+denoise_batch()nqr_snn/denoising/selector.py— uses denoise helpernqr_snn/snn/train.py— saves encoder, early stops on accuracynqr_snn/snn/ensemble.py— loads encoder, uses LearnableTemporalEncodernqr_snn/inference.py— uses LearnableTemporalEncoderrun_full_pipeline.py— wires search→ensemble, uses denoise helper, uses ensemble encoder
Net Effect
- ~217 lines added (new helpers, encoder save/load, search→ensemble wiring)
- ~141 lines removed (duplicated noise/denoising code, tautological verification)
- All existing tests pass. Backward compatible with legacy checkpoints.
KD099 changed pull request status to open