-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Failing for my specific waveforms #16
Comments
Also I tested with the numpy code (i.e. same tensors with
|
I just had a clue; since I know I use auraloss.SISDRLoss() (Scale-Invariant SDR loss, https://github.com/csteinmetz1/auraloss) with success in my neural network, I tried your So my waveforms are a problem for the Scale-Variant (or default) bss metrics, but succeed with scale invariant sdr. On the other hand, |
Hi, thanks for reporting. The SIR requires computation of the inverse of the covariance matrix. From the limited output your provide, it looks like there is very high correlation between the two reference signals. If that is the case, then their covariance matrix will be close to rank deficient and the system cannot be stably inverted. This is a limitation of the SIR metric itself, which is not well defined in this case. |
Thanks for the suggestion, if I use a large enough value e.g. Indeed, basically in the early iterations of my neural network, there is very little "demixing" and the output is the same as the input until some demixing is learned. Next, I run into the cost matrix having NaNs, +inf/-inf later on in the Hungarian method. I think maybe using the full BSS metrics (SDR, SIR, SAR) as the training loss is not going to be a great idea. Maybe I'll use SDR for training loss, and SDR/SIR/SAR for validation loss. |
Ok, that's good. I can believe that the output of the networks may be very close to each other in the beginning. However, the problem arises when the targets are the same or close to each other. You may want to check that you give the target/pred in the correct order to the loss. Note that the order is reversed between the loss functions of pytorch (pred, target) and the bss_eval metrics (target, pred). In your example above, the waveform used is the same for pred in target. For the NaN, there is another workaround implemented. You can set |
Hello,
I have some waveforms on which the evaluation fails. The shape is
[64, 2, 44100]
(batch size 64, 2 channels, 44100 samples i.e. 1 second of music @ 44100 Hz sample rate)I've attached the tensors (saved as .pt files), and my test looks like this:
The error output is:
The waveforms are normal stuff (extracted segments from MUSDB18-HQ). I've attached
waveform.pt
ain a zip file. Can you help me figure it out? Thanks in advance.sevagh-bss-eval-error.zip
The text was updated successfully, but these errors were encountered: