Metadata-Version: 2.1
Name: genni
Version: 1.0.0
Summary: GENNI: Visualising the Geometry of Equivalences for Neural Network Identifiability
Home-page: https://github.com/Do-Not-Circulate/GENNI_public
License: MIT
Keywords: ml,visualisation,neural-networks,diffgeom,pytorch
Author: Arinbjörn Kolbeinsson
Maintainer: Isak Falk
Maintainer-email: ucabitf@ucl.ac.uk
Requires-Python: >=3.8,<3.9
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Requires-Dist: matplotlib (>=3.3.2,<4.0.0)
Requires-Dist: numpy (>=1.19.4,<2.0.0)
Requires-Dist: pandas (>=1.1.4,<2.0.0)
Requires-Dist: plotly (>=4.12.0,<5.0.0)
Requires-Dist: pyyaml (>=5.3.1,<6.0.0)
Requires-Dist: ray[tune] (>=1.0.0,<2.0.0)
Requires-Dist: tensorboard (>=2.3.0,<3.0.0)
Requires-Dist: torch (>=1.7.0,<2.0.0)
Requires-Dist: torchvision (>=0.8.1,<0.9.0)
Requires-Dist: tqdm (>=4.51.0,<5.0.0)
Project-URL: Repository, https://github.com/Do-Not-Circulate/GENNI_public
Description-Content-Type: text/markdown

# [GENNI: Visualising the Geometry of Equivalences for Neural Network Identifiability](https://drive.google.com/file/d/1mGO-rLOZ-_TXu_-8KIfSUiFEqymxs2x5/view)

## Disclaimer

This is code associated with the paper ["GENNI: Visualising the Geometry of Equivalences for Neural Network Identifiability,"](https://drive.google.com/file/d/1mGO-rLOZ-_TXu_-8KIfSUiFEqymxs2x5/view) published in the [NeurIPS](https://nips.cc/) Workshop on [Differential Geometry meets Deep Learning 2020](https://sites.google.com/view/diffgeo4dl/).

If you have any questions, please feel free to reach out to us or make an issue.

## Preliminaries

Our

```
pip install -r requirements.txt
```

## Usage

To use our package...

```
<details on library import and script execution go here>
```

How saving is done:

Results are expected to saved in specific locations. If this code is not used to create equivalences classes, but the plotting functions want to be used, we advise to follow the structure laied out in get_grid.py and simply use the methods in interpolation.py which are agnostic to the saved locations.

### Run experiment.py to produce elements in equivalence classes

- To check if the elements converged to elements in the equivalence class, run stats_plotting.
- Run the griding code to produce a set of elements in a subspace spanned by elements that were found.
- Subset the set by elements wiht loss less than some epsilon and choose an appropriate plotting mechanism.

### Getting directories and run IDs

After creating an experiment this will be dumped to **GENNI_HOME/experiment** where **GENNI_HOME** is set in the **genni.yml** file. An easy way to get the experiment directory and the run ids is to use the _tree_ command line argument as follows:

```sh
tree $GENNI_HOME/experiments -d -L 3
```

An example output looks like

```sh
experiments
└── Nov09_19-52-12_isak-arch
    ├── models
    │   └── 1604947934.637504
    └── runs
        └── 1604947934.637504
```

where `Nov09_19-52-12_isak-arch` is the identifier of the experiment and
`1604947934.637504` is an ID of a hyperparameter setting of this experiment.

## Citing

If you use GENNI anywhere in your work, please cite use using

```
@article{2020,
    title={GENNI: Visualising the Geometry of Equivalences for Neural Network Identifiability},
    author={Lengyel, Daniel and Petangoda, Janith and Falk, Isak and Highnam, Kate and Lazarou, Michalis and Kolbeinsson, Arinbjörn and Deisenroth, Marc Peter and Jennings, Nicholas R.},
    booktitle={NeurIPS Workshop on Differential Geometry meets Deep Learning},
    year={2020}
}
```

