Open SuperKogito opened 5 months ago
Here is one of my plots. The optimizer is unfortunately results is more accurate even tho its order is lower.
I also tried to interpolate instead of up-sampling using Scipy
but this did not affect the results.
from scipy.interpolate import interp1d
# Target x-coordinate values after extrapolation
x = np.arange(len(h))
target_x = np.linspace(0, len(h) - 1, target_eq_dB.shape[0])
# Linear interpolation
interpolator = interp1d(x, h, kind='linear')
extrapolated_array = interpolator(target_x)
Thanks for raising this. I can't reproduce your code example due to some variables that aren't included. If I had to take some guesses, you may get bad results if the input specification isn't handled properly. It should be in magnitude dB and it should be specified in normalized frequency points. If you can provide a more minimal code example that reproduces the IIRNet function call issue I can try to debug on my end.
I tried to normalise the frequencies range but the results are the same. I made a minimal example to replicate this behaviour iirnet_minimal_example. Thank you for taking the time to help me with this :)
Thanks for putting that together. I was able to validate that the solutions you are getting from IIRNet at in fact what the model is producing. It seems that the particular target you are trying to fit is out of distribution for the model. This is a known limitation of IIRNet. I am curious where your target curve comes from. Perhaps based on that we can understand why the model does not generalize well. The fits from the IIR optimizer seem quite good to me. Is there a particular reason you were looking to use IIRNet over the optimizer?
The target curve is an equalisation curve based on some speaker measurements.
Even though the optimiser seems to perform better in this case, it still suffers from the following drawbacks:
Hello Christian,
thank you for sharing this project. I am currently testing IIRNet with some magnitude responses I have and trying to compare the results with an optimisation based approach. Unfortunately, the results by IIRNet are way off. Is there a way to fine tune the output (without retraining). Or am I doing something wrong here. My code looks like this:
Unfortunately, the inference results are not at all close to the expected values/ response. They seem to capture some attribute of the curve but the result is not usable :/ any ideas if I am doing something wrong here? or maybe how to possibly get better results?