You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Shuffle event training batches, and test the reader that landed without tests
SSC's training split is sorted by class -- 35 contiguous runs over 75,466
samples. The image path has always built its loader with shuffle=train;
event_batches read range(start, stop) in order and had no shuffle at all, so
every batch was a single class in class order and the network learned only
to name whichever class it was currently being shown. Held-out accuracy went
from 3.84% to 11.88% against 2.86% chance once the order was fixed.
No test could have caught it. The synthetic fixture labels samples
index % num_classes, so sixteen consecutive indices carry sixteen distinct
classes -- accidentally perfect interleaving, and the exact opposite of what
a real recording does. It took a real dataset to expose it, which is the
fourth time in this area that a fixture was better behaved than reality.
event_batches now takes shuffle and seed; the engine passes shuffle=train.
The default stays sequential, so the dashboard's demo pass is unchanged.
Also here: tests/test_hsd_reader.py, which belonged with the reader in
db0c338 and was left untracked when that commit swept the reader up under a
message about documentation links. The reader has had no tests in history
until now.
Its tripwire on tonic's arithmetic is gated on the promotion rule it depends
on. Asserting the multiply stays float16 only holds under NEP 50; NumPy 1.x
widens it to float32 and the timestamps survive, so on a legacy NumPy -- and
this project supports numpy>=1.26 -- the premise does not exist and the test
was failing for the wrong reason. It now skips there, naming the version,
and still fires on NumPy 2.
The SSC row is still not published. Three 3-epoch configurations reach
9-12%, all with loss barely under ln(35) = 3.555, so the stock defaults are
genuinely a poor fit for audio rather than still broken. Publishing that is
a judgement about what a catalog slot should mean, and separately the hub's
compatibility layer builds its comparison preset with no parameters, so it
rejects any checkpoint that is not 10-class.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
0 commit comments