https://github.com/rose-stl-lab/laligan
Latent Space Symmetry Discovery.
https://github.com/rose-stl-lab/laligan
Last synced: about 1 year ago
JSON representation
Latent Space Symmetry Discovery.
- Host: GitHub
- URL: https://github.com/rose-stl-lab/laligan
- Owner: Rose-STL-Lab
- Created: 2024-06-23T19:11:47.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-12T23:58:15.000Z (almost 2 years ago)
- Last Synced: 2025-04-20T11:31:58.274Z (about 1 year ago)
- Language: Python
- Size: 392 KB
- Stars: 7
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Latent Space Symmetry Discovery (LaLiGAN)
Code for our ICML 2024 paper, [Latent Space Symmetry Discovery](https://arxiv.org/pdf/2310.00105).

## Setup the Environment
```
conda create -n laligan python=3.9
conda deactivate
conda activate laligan
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip3 install scipy==1.10.1
pip3 install tqdm==4.64.1
cd src
```
## Setup Datasets
### Reaction-Diffusion System
The system is simulated with the Matlab scripts provided in [SINDy Autoencoders](https://github.com/kpchamp/SindyAutoencoders/tree/master/rd_solver).
Running the script `reaction_diffusion.m` should produce the data file `reaction_diffusion.mat`. Then, place it under `./data` in this repository.
Alternatively, download the data from [this link](https://drive.google.com/file/d/1N-oV4wGCBo6TxUX8VuUhWiAlVvuUokaj/view?usp=sharing).
### Rotating Object
Generate the renderings of a bookshelf with different orientations:
```
python data_utils/rot_obj.py --num_samples 10000 --name train
python data_utils/rot_obj.py --num_samples 100 --name val
python data_utils/rot_obj.py --num_samples 100 --name test
```
## Experiments
### Reaction-Diffusion System
LaLiGAN Symmetry discovery in 2D latent space:
```
python main.py --config rd
```
LaLiGAN Symmetry discovery in 3D latent space:
```
python main.py --config rd_3d
```
SINDy equation discovery in the LaLiGAN 2D latent space:
```
python main_sindy.py --config rd_sindy
```
SINDy equation discovery in the LaLiGAN 3D latent space:
```
python main_sindy.py --config rd_sindy_3d
```
SINDy Autoencoder equation discovery in the 3D latent space:
```
python main.py --config rd_sindyonly
```
### Nonlinear Pendulum
LaLiGAN Symmetry discovery for nonlinear pendulum:
```
python main.py --config pendulum
```
(Baseline) LieGAN symmetry discovery for nonlinear pendulum:
```
python main.py --config pendulum_liegan
```
SINDy equation discovery in the LaLiGAN latent space:
```
python main_sindy.py --config pendulum_sindy
```
SINDy Autoencoder equation discovery:
```
python main.py --config pendulum_sindyae
```
SINDy equation discovery w/o autoencoder:
```
python main.py --config pendulum_sindyonly
```
### Lotka-Volterra Equations
LaLiGAN Symmetry discovery for Lotka-Volterra system:
```
python main.py --config lv
```
(Baseline) LieGAN symmetry discovery Lotka-Volterra system:
```
python main.py --config lv_liegan
```
SINDy equation discovery in the LaLiGAN latent space:
```
python main_sindy.py --config lv_sindy
```
SINDy Autoencoder equation discovery:
```
python main.py --config lv_sindyae
```
SINDy equation discovery w/o autoencoder:
```
python main.py --config lv_sindyonly
```
### Double Bump World
Learning $\mathrm{SO}(2) \times \mathrm{SO}(2)$ equivariant representation:
```
python main.py --config double_bump
```
### Rotating Object
Learning $\mathrm{SO}(3)$ equivariant representation:
```
python main.py --config rs
```
## Cite
```
@inproceedings{yang24latent,
title = {Latent Space Symmetry Discovery},
author = {Yang, Jianke and Dehmamy, Nima and Walters, Robin and Yu, Rose},
booktitle = {Proceedings of the 41st International Conference on Machine Learning},
pages = {56047--56070},
year = {2024},
volume = {235},
series = {Proceedings of Machine Learning Research},
publisher = {PMLR},
url = {https://proceedings.mlr.press/v235/yang24g.html},
}
```