{"id":19546015,"url":"https://github.com/hewlettpackard/separable-operator-networks","last_synced_at":"2026-03-07T13:02:48.158Z","repository":{"id":252849659,"uuid":"838545344","full_name":"HewlettPackard/separable-operator-networks","owner":"HewlettPackard","description":"Official repo for separable operator networks -- extreme-scale operator learning for parametric PDEs.","archived":false,"fork":false,"pushed_at":"2024-11-02T00:01:29.000Z","size":965,"stargazers_count":26,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-19T10:21:28.440Z","etag":null,"topics":["deep-operator-learning","deeponet","operator-learning","partial-differential-equations","physics-informed-machine-learning","physics-informed-neural-networks","scientific-machine-learning"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HewlettPackard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-05T21:38:16.000Z","updated_at":"2025-04-10T03:15:10.000Z","dependencies_parsed_at":"2024-08-12T23:46:18.093Z","dependency_job_id":"a8d20a55-c88b-4ea5-9bdf-c6569d2cb6bf","html_url":"https://github.com/HewlettPackard/separable-operator-networks","commit_stats":null,"previous_names":["hewlettpackard/separable-operator-networks"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HewlettPackard%2Fseparable-operator-networks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HewlettPackard%2Fseparable-operator-networks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HewlettPackard%2Fseparable-operator-networks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HewlettPackard%2Fseparable-operator-networks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HewlettPackard","download_url":"https://codeload.github.com/HewlettPackard/separable-operator-networks/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251041495,"owners_count":21527207,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-operator-learning","deeponet","operator-learning","partial-differential-equations","physics-informed-machine-learning","physics-informed-neural-networks","scientific-machine-learning"],"created_at":"2024-11-11T03:42:39.056Z","updated_at":"2026-03-07T13:02:43.137Z","avatar_url":"https://github.com/HewlettPackard.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Separable Operator Networks (SepONet)\n[![Static Badge](https://img.shields.io/badge/arXiv-2407.11253-blue?link=https%3A%2F%2Farxiv.org%2Fabs%2F2407.11253)](https://arxiv.org/abs/2407.11253)\n[![Static Badge](https://img.shields.io/badge/pypi-v0.0.2-green?link=https%3A%2F%2Fpypi.org%2Fproject%2Fseparable-operator-networks%2F)](https://pypi.org/project/separable-operator-networks)\n\nThis is the official repository for separable operator networks (SepONet) originally introduced in [this preprint](https://arxiv.org/abs/2407.11253) [1]. \n\n## Installation\nThis code uses JAX as a dependency. It is recommended to [install with GPU/TPU compatibility](https://jax.readthedocs.io/en/latest/installation.html) prior to installing this library. JAX CPU is provided as the default dependency.\n\nPlease install with pip:\n```bash\npip install separable-operator-networks\n```\nAlternatively, you may specify the `[cuda12]` extra to install `jax[cuda12]` automatically:\n```bash\npip install separable-operator-networks[cuda12]\n```\n\n## Description\n\nOperator learning has become a powerful tool in machine learning for modeling complex physical systems governed by partial differential equations (PDEs). Although Deep Operator Networks (DeepONet) show promise, they require extensive data acquisition. Physics-informed DeepONets (PI-DeepONet) mitigate data scarcity but suffer from inefficient training processes. We introduce Separable Operator Networks (SepONet), a novel framework that significantly enhances the efficiency of physics-informed operator learning. SepONet uses independent trunk networks to learn basis functions separately for different coordinate axes, enabling faster and more memory-efficient training via forward-mode automatic differentiation. The SepONet architecture for a $d=2$ dimensional coordinate grid is depicted below. The architecture is inspired by the method of separation of variables and recent exploration of separable physics-informed neural networks [2] for single instance PDE solutions.\n\nOur [preprint](https://arxiv.org/abs/2407.11253) provides a universal approximation theorem for SepONet proving that it generalizes to arbitrary operator learning problems. For a variety of 1D time-dependent PDEs, SepONet has similar accuracy scaling to PI-DeepONet, but with as much as 112x faster training time and 82x reduction in GPU memory usage. For 2D time-dependent PDEs, SepONet is capable of accurate predictions at scales where PI-DeepONet fails. The full test scaling results as a function of the number of collocation points and number of input functions is shown below. These results may be reproduced using our [scripts](https://github.com/HewlettPackard/separable-operator-networks/tree/main/scripts).\n\n![SepONet architecture for 2 dimensional coordinate grid](docs/assets/SepONet_Architecture.png?raw=true)\n![Comparing SepONet to PI-DeepONet when varying number of collocation points](docs/assets/figure1_varying_Nc.png?raw=true)\n![Comparing SepONet to PI-DeepONet when varying number of input functions](docs/assets/figure2_varying_Nf.png?raw=true)\n\n## Code Overview\n\nA SepONet model can be imported using:\n```python\nimport jax\nimport separable_operator_networks as sepop\nd = ... # replace with problem dimension\nbranch_dim = ... # replace with input shape for branch network (MLP by default)\nkey = jax.random.key(0)\n\nmodel = sepop.models.SepONet(d, branch_dim, key=key)\n```\nOther model classes such as `PINN`, `SPINN`, `DeepONet` are implemented in the `sepop.models` submodule. These models are implemented as subclasses of `eqx.Module` (see [equinox](https://github.com/patrick-kidger/equinox)), enabling `eqx.filter_vmap` and `eqx.filter_grad`, along with easily customizable training routines via [optax](https://github.com/google-deepmind/optax) (see `sepop.train.train_loop(...)` for a simple `optax` training loop). PDE instances, loss functions, and other helper functions can be imported from the corresponding examples in the `sepop.pde` submodule (such as `sepop.pde.advection`).\n\nTest data can be generated using the Python scripts in `/scripts/generate_test_data`. Test cases can be ran using the scripts in `/scripts/main_scripts` and `/scripts/scale_tests`.\n\n## Citation\n\n```tex\n@misc{yu2024separableoperatornetworks,\ntitle={Separable Operator Networks}, \nauthor={Xinling Yu and Sean Hooten and Ziyue Liu and Yequan Zhao and Marco Fiorentino and Thomas Van Vaerenbergh and Zheng Zhang},\nyear={2024},\neprint={2407.11253},\narchivePrefix={arXiv},\nprimaryClass={cs.LG},\nurl={https://arxiv.org/abs/2407.11253}, \n}\n```\n\n## Authors\n\nSean Hooten (sean dot hooten at hpe dot com)  \nXinling Yu (xyu644 at ucsb dot edu)\n\n## License\n\nMIT (see LICENSE.md)\n\n## References\n\n[1] X. Yu, S. Hooten, Z. Liu, Y. Zhao, M. Fiorentino, T. Van Vaerenbergh, and Z. Zhang. Separable Operator Networks. arXiv preprint arXiv:2407.11253 (2024).  \n[2] J. Cho, S. Nam, H. Yang, S.-B. Yun, Y. Hong, E. Park. Separable PINN: Mitigating the Curse of Dimensionality in Physics-Informed Neural Networks. arXiv preprint arXiv: 2211.08761 (2023).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhewlettpackard%2Fseparable-operator-networks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhewlettpackard%2Fseparable-operator-networks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhewlettpackard%2Fseparable-operator-networks/lists"}