{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/theoretical-guarantees-for-learning","title":"Neural Jump Ordinary Differential Equations: Consistent Continuous-Time Prediction and Filtering","arxiv_id":"2006.04727","date":"2020-06-08","proceeding":"ICLR 2021 1","authors":["Calypso Herrera","Florian Krach","Josef Teichmann"],"abstract":"Combinations of neural ODEs with recurrent neural networks (RNN), like GRU-ODE-Bayes or ODE-RNN are well suited to model irregularly observed time series. While those models outperform existing discrete-time approaches, no theoretical guarantees for their predictive capabilities are available. Assuming that the irregularly-sampled time series data originates from a continuous stochastic process, the $L^2$-optimal online prediction is the conditional expectation given the currently available information. We introduce the Neural Jump ODE (NJ-ODE) that provides a data-driven approach to learn, continuously in time, the conditional expectation of a stochastic process. Our approach models the conditional expectation between two observations with a neural ODE and jumps whenever a new observation is made. We define a novel training framework, which allows us to prove theoretical guarantees for the first time. In particular, we show that the output of our model converges to the $L^2$-optimal prediction. This can be interpreted as solution to a special filtering problem. We provide experiments showing that the theoretical results also hold empirically. Moreover, we experimentally show that our model outperforms the baselines in more complex learning tasks and give comparisons on real-world datasets.","url_abs":"https://arxiv.org/abs/2006.04727v4","url_pdf":"https://arxiv.org/pdf/2006.04727v4.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"theoretical-guarantees-for-learning","repo_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"theoretical-guarantees-for-learning","repo_url":"https://github.com/HerreraKrachTeichmann/NJODE","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"time-series-1","task_name":"Time Series"},{"task_slug":"time-series","task_name":"Time Series Analysis"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2006.04727","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2006.04727"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/HerreraKrachTeichmann/NJODE","reach":null}],"summary":{"ran_fixture":1,"ran_draft_wrong":2,"ran":1,"unverified":17},"by_repo_kind":{"official":{"samples":21,"ran":4,"repositories":2}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"3538a026b3686dc4","entry":"compute_KL_loss","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"GRU_ODE_Bayes/models_gru_ode_bayes.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/GRU_ODE_Bayes/models_gru_ode_bayes.py","link_basis":"plan_row","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3538a026b3686dc4"}},{"code_sha256_prefix":"d7007fe42b0a49b2","entry":"gaussian_KL","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"GRU_ODE_Bayes/models_gru_ode_bayes.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/GRU_ODE_Bayes/models_gru_ode_bayes.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d7007fe42b0a49b2"}},{"code_sha256_prefix":"97cefd1ecd9fcbca","entry":"get_data_min_max","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"latent_ODE/physionet_LODE.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/latent_ODE/physionet_LODE.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"97cefd1ecd9fcbca"}},{"code_sha256_prefix":"6199bec38ce9b0bb","entry":"get_parameter_array","repo":"HerreraKrachTeichmann/NJODE","repo_kind":"official","path":"NJODE/parallel_train.py","file_url":"https://github.com/HerreraKrachTeichmann/NJODE/blob/HEAD/NJODE/parallel_train.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6199bec38ce9b0bb"}},{"code_sha256_prefix":"05fb630e81f73dab","entry":"add_jitter","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"GRU_ODE_Bayes/data_utils_gru_ode_bayes.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/GRU_ODE_Bayes/data_utils_gru_ode_bayes.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"05fb630e81f73dab"}},{"code_sha256_prefix":"c9b91f3a93d08f8c","entry":"compute_binary_CE_loss","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"latent_ODE/likelihood_eval_LODE.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/latent_ODE/likelihood_eval_LODE.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c9b91f3a93d08f8c"}},{"code_sha256_prefix":"12d22dac3d5ee45c","entry":"compute_loss","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"NJODE/models.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/NJODE/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"12d22dac3d5ee45c"}},{"code_sha256_prefix":"b5eeaff03e06c051","entry":"compute_loss_2","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"NJODE/models.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/NJODE/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b5eeaff03e06c051"}},{"code_sha256_prefix":"4039617eeaf62d4e","entry":"custom_collate_fn","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"GRU_ODE_Bayes/data_utils_gru_ode_bayes.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/GRU_ODE_Bayes/data_utils_gru_ode_bayes.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4039617eeaf62d4e"}},{"code_sha256_prefix":"e7c9692657b50119","entry":"evaluate_model","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"NJODE/physionet_train.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/NJODE/physionet_train.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e7c9692657b50119"}},{"code_sha256_prefix":"172c6c49b142f584","entry":"evaluate_model","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"NJODE/climate_train.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/NJODE/climate_train.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"172c6c49b142f584"}},{"code_sha256_prefix":"bd43eff2ee1d2449","entry":"gaussian_log_likelihood","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"latent_ODE/likelihood_eval_LODE.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/latent_ODE/likelihood_eval_LODE.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"bd43eff2ee1d2449"}},{"code_sha256_prefix":"dd7dc3c87b389bb1","entry":"get_comparison_times_ind","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"NJODE/physionet_train.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/NJODE/physionet_train.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"dd7dc3c87b389bb1"}},{"code_sha256_prefix":"ac269034a4dc74f2","entry":"get_ffnn","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"NJODE/models.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/NJODE/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ac269034a4dc74f2"}},{"code_sha256_prefix":"a809ed2bcb40ac31","entry":"load_metadata","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"NJODE/data_utils.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/NJODE/data_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a809ed2bcb40ac31"}},{"code_sha256_prefix":"19750a398c51a677","entry":"parse_datasets","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"latent_ODE/parse_datasets_LODE.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/latent_ODE/parse_datasets_LODE.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"19750a398c51a677"}},{"code_sha256_prefix":"fa93c9ef59f86197","entry":"plot_paths_from_checkpoint","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"NJODE/extras.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/NJODE/extras.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fa93c9ef59f86197"}},{"code_sha256_prefix":"8cefc622fcbe2f88","entry":"poisson_log_likelihood","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"latent_ODE/likelihood_eval_LODE.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/latent_ODE/likelihood_eval_LODE.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8cefc622fcbe2f88"}},{"code_sha256_prefix":"c133d40e18cb7828","entry":"seq_collate_fn","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"GRU_ODE_Bayes/data_utils_gru_ode_bayes.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/GRU_ODE_Bayes/data_utils_gru_ode_bayes.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c133d40e18cb7828"}},{"code_sha256_prefix":"77d551e089ce5d29","entry":"variable_time_collate_fn","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"latent_ODE/physionet_LODE.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/latent_ODE/physionet_LODE.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"77d551e089ce5d29"}},{"code_sha256_prefix":"82d3648c208e37cf","entry":"variable_time_collate_fn1","repo":"HerreraKrachTeichmann/ControlledODERNN","repo_kind":"official","path":"latent_ODE/physionet_LODE.py","file_url":"https://github.com/HerreraKrachTeichmann/ControlledODERNN/blob/HEAD/latent_ODE/physionet_LODE.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"82d3648c208e37cf"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}