Skip to content
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

Structural improvement & more #4

Open
simutisernestas opened this issue Nov 5, 2023 · 1 comment
Open

Structural improvement & more #4

simutisernestas opened this issue Nov 5, 2023 · 1 comment

Comments

@simutisernestas
Copy link

simutisernestas commented Nov 5, 2023

It's a bad practice to include build files in version control, I could submit a PR to clean it up a bit and update the ,gitignore if you're up for it;

Also optimization process is quite slow, would be nice to utilize GPU and with increased batch size of the training to speed it up. I believe this could reduce iteration (design) time to couple of seconds. Now even for toy datasets it takes tens of minutes to optimize. Would be up for contributing to that also;

Another point is measurements arriving at different rates, would love to hear your opinion about supporting real world use cases of the package. Now it kinda works with simply assuming that all sensor data are coming in at the same rate but in reality it's never the case...

Awesome work by the way : )

@simutisernestas simutisernestas changed the title Structural improvement Structural improvement & more Nov 5, 2023
@ido90
Copy link
Owner

ido90 commented Nov 5, 2023

Thank you for your comments!
PR submissions are welcome.

GPU

Your contribution for GPU support will also be much appreciated.
At the time I trained on 1500 trajectories in a low-dimensional doppler radar problem. The training took just a few minutes (not tens of minutes...), and I could parallelize different variants on my CPU cores, so there was not much room for acceleration. On other scenarios, though, GPU may indeed be more efficient.

Irregular time-steps

  • The KF works in constant time-steps. One way around is having a basic time-step dt, and expressing longer intervals as integer multiplications K*dt. Then, you can call predict() K times before calling the update() step.
  • For high irregularities, I would consider the approach of neural ODEs: by predicting the derivative dx/dt instead of the next state x itself, you get much more flexibility with the time-steps. Such neural ODE methods may be further stabilized via a piecewise-linear implementation, as we discuss in this work:
    https://research.nvidia.com/labs/par/publication/nesde.html

You are also welcome to pm me if you like to discuss specific use-cases.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants