-
Notifications
You must be signed in to change notification settings - Fork 753
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
Bringing Point Processes into GluonTS #294
Comments
What's the status of this feature now? |
Hi Ehsan, thanks for your message. Unfortunately, it's still WIP. |
We had some discussion regarding the same issue for Something like |
Hey thanks for reading through this @AaronSpieler ! I agree with splitting it up. On second thought, some parts are more coupled than others. The |
Hello everyone. 🎉
Here you may find the branch I'm working on to include capability for working with temporal point processes in GluonTS. It has a few days of extra work left to complete the sampler, and potentially throw in a tutorial, but the design as I see it is in place.
So integrating ideas from TPP to GluonTS meant a bit of work, and extending some of the core facilities the library provides.
The main difficulty is that TPP realizations are "ragged" tensors, i.e., observations occur in a fixed length interval in the real line and have "variable length." This is why the Tensor objects passed around are ragged, and common arguments such as
prediction_length
andcontext_length
are void. I tried, to the best of my ability, to conform to the GluonTS API while allowing TPP-type data structures. This meant extending some of GluonTS's common interfaces.Specifically,
Forecast
object is there, which allows for forecasts to be available as ragged tensors.DataLoader
interfaces are extended to include logic onstack
ing ragged tensors. Particularly, this means extending theBatchBuffer
object, and we now have aVariableLengthBatchBuffer
.InstanceSplitter
, had to go in there.ContinuousTimeInstanceSplitter
(extendingFlatMapTransform
) samples sub-intervals of the real line and produces ragged tensors which include the point observations. This introduces a dependency on aContinuousTimePointSampler
object, which we also define an interface for.GluonPredictor
, ThePointProcessGluonPredictor
is again aware of point process-style data structures and yieldsPointProcessSampleForecast
s.Some Other Issues
LSTMCell
facility rather thanLSTM
(the latter cannot work with ragged sequences), and has to be unrolled explicitly---with the length of unrolling known ahead of time.The Plan & Some Questions
My plan is as follows. I'll cut the contribution up into several PRs, splitting core components and the model itself. I'm hoping this will make the review process easier. At this point however, I have a few questions.
Estimator
,Predictor
,Network
s) ingluonts.model.tpp
orgluonts.tpp
? The main issue here is that we will have multiple TPP models that share, e.g., thePredictor
object; and that TPP model API differs slightly from other model APIs (e.g., noprediction_length
butprediction_interval_length
, etc.).Transform
,Forecast
,BatchBuffer
, andDataLoader
objects with their parents ingluonts.dataset
andgluonts.transform
? Or maybegluonts.tpp.common
?Looking forward to the discussion. Thanks a lot!
The text was updated successfully, but these errors were encountered: