All Projects → patrick-kidger → Neuralcde

patrick-kidger / Neuralcde

Licence: apache-2.0
Code for "Neural Controlled Differential Equations for Irregular Time Series"

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Neuralcde

NNS
Nonlinear Nonparametric Statistics
Stars: ✭ 26 (-92.38%)
Mutual labels:  time-series
Crate
CrateDB is a distributed SQL database that makes it simple to store and analyze massive amounts of data in real-time.
Stars: ✭ 3,254 (+854.25%)
Mutual labels:  time-series
Stock Trading Ml
A stock trading bot that uses machine learning to make price predictions.
Stars: ✭ 325 (-4.69%)
Mutual labels:  time-series
Time Series Machine Learning
Machine learning models for time series analysis
Stars: ✭ 261 (-23.46%)
Mutual labels:  time-series
Time Series Deep Learning State Of The Art
Scientific time series and deep learning state of the art
Stars: ✭ 277 (-18.77%)
Mutual labels:  time-series
Pycaret
An open-source, low-code machine learning library in Python
Stars: ✭ 4,594 (+1247.21%)
Mutual labels:  time-series
luftdatenpumpe
Process live and historical data from luftdaten.info, IRCELINE and OpenAQ. Filter by station-id, sensor-id and sensor-type, apply reverse geocoding, store into timeseries and RDBMS databases, publish to MQTT, output as JSON or visualize in Grafana.
Stars: ✭ 22 (-93.55%)
Mutual labels:  time-series
Deepadots
Repository of the paper "A Systematic Evaluation of Deep Anomaly Detection Methods for Time Series".
Stars: ✭ 335 (-1.76%)
Mutual labels:  time-series
Pyaf
PyAF is an Open Source Python library for Automatic Time Series Forecasting built on top of popular pydata modules.
Stars: ✭ 289 (-15.25%)
Mutual labels:  time-series
Luminaire
Luminaire is a python package that provides ML driven solutions for monitoring time series data.
Stars: ✭ 316 (-7.33%)
Mutual labels:  time-series
Timelines Chart
Timelines Chart
Stars: ✭ 259 (-24.05%)
Mutual labels:  time-series
Questdb
An open source SQL database designed to process time series data, faster
Stars: ✭ 7,544 (+2112.32%)
Mutual labels:  time-series
Soft Dtw
Python implementation of soft-DTW.
Stars: ✭ 300 (-12.02%)
Mutual labels:  time-series
Chronix.server
The Chronix Server implementation that is based on Apache Solr.
Stars: ✭ 258 (-24.34%)
Mutual labels:  time-series
Pytorch Ts
PyTorch based Probabilistic Time Series forecasting framework based on GluonTS backend
Stars: ✭ 330 (-3.23%)
Mutual labels:  time-series
Merlion
Merlion: A Machine Learning Framework for Time Series Intelligence
Stars: ✭ 2,368 (+594.43%)
Mutual labels:  time-series
Nightingale
💡 A Distributed and High-Performance Monitoring System. Prometheus enterprise edition
Stars: ✭ 4,003 (+1073.9%)
Mutual labels:  time-series
Atspy
AtsPy: Automated Time Series Models in Python (by @firmai)
Stars: ✭ 340 (-0.29%)
Mutual labels:  time-series
Atsd Use Cases
Axibase Time Series Database: Usage Examples and Research Articles
Stars: ✭ 335 (-1.76%)
Mutual labels:  time-series
Chartjs Plugin Streaming
Chart.js plugin for live streaming data
Stars: ✭ 310 (-9.09%)
Mutual labels:  time-series

Neural Controlled Differential Equations
for Irregular Time Series
[arXiv, YouTube]

Building on the well-understood mathematical theory of controlled differential equations, we demonstrate how to construct models that:

  • Act directly on irregularly-sampled partially-observed multivariate time series.
  • May be trained with memory-efficient adjoint backpropagation - even across observations.
  • Demonstrate state-of-the-art performance.

They are straightforward to implement and evaluate using existing tools, in particular PyTorch and the torchcde library.


Library

See torchcde.

Example

We encourage looking at example.py, which demonstrates how to use the library to train a Neural CDE model to predict the chirality of a spiral.

Also see irregular_data.py, for demonstrations on how to handle variable-length inputs, irregular sampling, or missing data, all of which can be handled easily, without changing the model.

A self contained short example:

import torch
import torchcde

# Create some data
batch, length, input_channels = 1, 10, 2
hidden_channels = 3
t = torch.linspace(0, 1, length)
t_ = t.unsqueeze(0).unsqueeze(-1).expand(batch, length, 1)
x_ = torch.rand(batch, length, input_channels - 1)
x = torch.cat([t_, x_], dim=2)  # include time as a channel

# Interpolate it
coeffs = torchcde.natural_cubic_spline_coeffs(x)
X = torchcde.NaturalCubicSpline(coeffs)

# Create the Neural CDE system
class F(torch.nn.Module):
    def __init__(self):
        super(F, self).__init__()
        self.linear = torch.nn.Linear(hidden_channels, 
                                      hidden_channels * input_channels)
    def forward(self, t, z):
        return self.linear(z).view(batch, hidden_channels, input_channels)

func = F()
z0 = torch.rand(batch, hidden_channels)

# Integrate it
torchcde.cdeint(X=X, func=func, z0=z0, t=X.interval)

Reproducing experiments

Everything to reproduce the experiments of the paper can be found in the experiments folder. Check the folder for details.

Results

As an example (taken from the paper - have a look there for similar results on other datasets):

Citation

@article{kidger2020neuralcde,
    title={{N}eural {C}ontrolled {D}ifferential {E}quations for {I}rregular {T}ime {S}eries},
    author={Kidger, Patrick and Morrill, James and Foster, James and Lyons, Terry},
    journal={Advances in Neural Information Processing Systems},
    year={2020}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].