{"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/generative-modeling-of-regular-and-irregular","title":"Generative Modeling of Regular and Irregular Time Series Data via Koopman VAEs","arxiv_id":"2310.02619","date":"2023-10-04","proceeding":null,"authors":["Ilan Naiman","N. Benjamin Erichson","Pu Ren","Michael W. Mahoney","Omri Azencot"],"abstract":"Generating realistic time series data is important for many engineering and scientific applications. Existing work tackles this problem using generative adversarial networks (GANs). However, GANs are unstable during training, and they can suffer from mode collapse. While variational autoencoders (VAEs) are known to be more robust to the these issues, they are (surprisingly) less considered for time series generation. In this work, we introduce Koopman VAE (KoVAE), a new generative framework that is based on a novel design for the model prior, and that can be optimized for either regular and irregular training data. Inspired by Koopman theory, we represent the latent conditional prior dynamics using a linear map. Our approach enhances generative modeling with two desired features: (i) incorporating domain knowledge can be achieved by leveraging spectral tools that prescribe constraints on the eigenvalues of the linear map; and (ii) studying the qualitative behavior and stability of the system can be performed using tools from dynamical systems theory. Our results show that KoVAE outperforms state-of-the-art GAN and VAE methods across several challenging synthetic and real-world time series generation benchmarks. Whether trained on regular or irregular data, KoVAE generates time series that improve both discriminative and predictive metrics. We also present visual evidence suggesting that KoVAE learns probability density functions that better approximate the empirical ground truth distribution.","url_abs":"https://arxiv.org/abs/2310.02619v2","url_pdf":"https://arxiv.org/pdf/2310.02619v2.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":"generative-modeling-of-regular-and-irregular","repo_url":"https://github.com/azencot-group/kovae","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"irregular-time-series","task_name":"Irregular Time Series"},{"task_slug":"time-series-1","task_name":"Time Series"},{"task_slug":"time-series-generation","task_name":"Time Series Generation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2310.02619","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2310.02619"}},"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/azencot-group/kovae","reach":null}],"summary":{"ran":3,"ran_fixture":1,"ran_draft_wrong":1,"ran_honours":1,"unverified":4},"by_repo_kind":{"official":{"samples":10,"ran":6,"repositories":1}},"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":10,"samples":[{"code_sha256_prefix":"8f40c66eb92fc038","entry":"FinalTanh","repo":"azencot-group/kovae","repo_kind":"official","path":"models/kovae.py","file_url":"https://github.com/azencot-group/kovae/blob/HEAD/models/kovae.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8f40c66eb92fc038"}},{"code_sha256_prefix":"b0bb79a19050d324","entry":"VKDecoder","repo":"azencot-group/kovae","repo_kind":"official","path":"models/kovae.py","file_url":"https://github.com/azencot-group/kovae/blob/HEAD/models/kovae.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b0bb79a19050d324"}},{"code_sha256_prefix":"9dd753161103d917","entry":"VKEncoder","repo":"azencot-group/kovae","repo_kind":"official","path":"models/kovae.py","file_url":"https://github.com/azencot-group/kovae/blob/HEAD/models/kovae.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9dd753161103d917"}},{"code_sha256_prefix":"045039dd4921b9ce","entry":"agg_losses","repo":"azencot-group/KoVAE","repo_kind":"official","path":"run_irregular.py","file_url":"https://github.com/azencot-group/KoVAE/blob/HEAD/run_irregular.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"045039dd4921b9ce"}},{"code_sha256_prefix":"1cb058c996e65e63","entry":"kl_loss","repo":"azencot-group/kovae","repo_kind":"official","path":"models/kovae.py","file_url":"https://github.com/azencot-group/kovae/blob/HEAD/models/kovae.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1cb058c996e65e63"}},{"code_sha256_prefix":"dadec7f7cc09688a","entry":"reparameterize","repo":"azencot-group/KoVAE","repo_kind":"official","path":"models/kovae.py","file_url":"https://github.com/azencot-group/KoVAE/blob/HEAD/models/kovae.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"dadec7f7cc09688a"}},{"code_sha256_prefix":"368cf1c84f69fa11","entry":"KoVAE","repo":"azencot-group/kovae","repo_kind":"official","path":"models/kovae.py","file_url":"https://github.com/azencot-group/kovae/blob/HEAD/models/kovae.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"368cf1c84f69fa11"}},{"code_sha256_prefix":"d33ba8079be30a6a","entry":"NeuralCDE","repo":"azencot-group/kovae","repo_kind":"official","path":"models/kovae.py","file_url":"https://github.com/azencot-group/kovae/blob/HEAD/models/kovae.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d33ba8079be30a6a"}},{"code_sha256_prefix":"600b2eeac446f533","entry":"VKEncoderIrregular","repo":"azencot-group/kovae","repo_kind":"official","path":"models/kovae.py","file_url":"https://github.com/azencot-group/kovae/blob/HEAD/models/kovae.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"600b2eeac446f533"}},{"code_sha256_prefix":"7bd2cfb51baa8845","entry":"log_losses","repo":"azencot-group/KoVAE","repo_kind":"official","path":"run_irregular.py","file_url":"https://github.com/azencot-group/KoVAE/blob/HEAD/run_irregular.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7bd2cfb51baa8845"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}