anatome 
Ἀνατομή is a PyTorch library to analyze internal representation of neural networks
This project is under active development and the codebase is subject to change.
Note the name of the pypi package is ultimate-anatome but the python import is done with
the original name import anatome.
Test via:
python -c "import anatome.my_utils as my_utils;my_utils.hello()"
python -c "import anatome.my_utils as my_utils;my_utils.my_anatome_test()"
Credit to original library: https://github.com/moskomule/anatome and consider citing both of us! Citation at the end of readme.
Installation
If you are going to use a gpu the do this first before continuing (or check the offical website: https://pytorch.org/get-started/locally/):
pip3 install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/torch_stable.html
Otherwise, just doing the follwoing should work.
pip install ultimate-anatome
Manual installation [for Development]
To use code first get the code from this repo (e.g. fork it on github):
git clone git@github.com:brando90/ultimate-anatome.git
Then install it in development mode in your python env with python >=3.9. E.g. create your env with conda:
conda create -n ultimate_anatome_env python=3.9
conda activate ultimate_anatome_env
Then install code in edibable mode and all it's depedencies with pip in the currently activated conda environment:
pip install -e ~/ultimate-anatome
Available Tools
Representation Similarity
To measure the similarity of learned representation, anatome.SimilarityHook is a useful tool. Currently, the following
methods are implemented.
- Raghu et al. NIPS2017 SVCCA
- Marcos et al. NeurIPS2018 PWCCA
- Kornblith et al. ICML2019 Linear CKA
- Ding et al. arXiv Orthogonal Procrustes distance
import torch
from torchvision.models import resnet18
from anatome import DistanceHook
from anatome.my_utils import remove_hook
model = resnet18()
hook1 = DistanceHook(model, "layer3.0.conv1")
hook2 = DistanceHook(model, "layer3.0.conv2")
model.eval()
with torch.no_grad():
model(torch.randn(128, 3, 224, 224))
# downsampling to (size, size) may be helpful
hook1.distance(hook2, size=8)
hook1.clear()
hook2.clear()
remove_hook(model, hook1)
remove_hook(model, hook2)
or to test do:
from anatome.my_utils import my_anatome_test
my_anatome_test()
Loss Landscape Visualization
from anatome import landscape2d
x, y, z = landscape2d(resnet18(),
data,
F.cross_entropy,
x_range=(-1, 1),
y_range=(-1, 1),
step_size=0.1)
imshow(z)
Fourier Analysis
- Yin et al. NeurIPS 2019 etc.,
from anatome import fourier_map
map = fourier_map(resnet18(),
data,
F.cross_entropy,
norm=4)
imshow(map)
Citation
If you use this implementation in your research, please conser citing my version of anatome:
@software{miranda2021ultimate_anatome,
author={Brando Miranda},
title={Ultimate Anatome, the ultimate PyTorch library to analyze internal representation of neural networks},
url={https://github.com/brando90/ultimate-anatome},
year={2021}
}
and the original version:
@software{hataya2020anatome,
author={Ryuichiro Hataya},
title={anatome, a PyTorch library to analyze internal representation of neural networks},
url={https://github.com/moskomule/anatome},
year={2020}
}
Related libraries:
- The original anatome of course https://github.com/moskomule/anatome
- https://github.com/AntixK/PyTorch-Model-Compare From the developers "A tiny package to compare two neural networks in PyTorch. There are many ways to compare two neural networks, but one robust and scalable way is using the Centered Kernel Alignment (CKA) metric, where the features of the networks are compared."
- Captum is trying to add support. Check it out here: https://github.com/pytorch/captum/issues/572#issuecomment-957306989
- The original svcca tutorials by Maithra et al https://github.com/google/svcca/tree/master/tutorials
- if you know more create a pull request and add it here!
Metadata
Release files for ultimate-anatome 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ultimate-anatome-0.1.1.tar.gz | 30.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ultimate_anatome-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 61.1 kB
Release files / ultimate-anatome-0.1.1.tar.gz
| Download URL | ultimate-anatome-0.1.1.tar.gz |
|---|---|
| Size | 30.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f3a0f1a48e3037f2aaedf7194569a94783f0818579e3125e9e7a94e4e14e80f0
|
|
BLAKE2b-256 checksum How to use checksums |
d78341e194e19878eea5cbd9647c5832fb94499307895365de0b2fba5e839f73
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.6
|
Release files / ultimate_anatome-0.1.1-py3-none-any.whl
| Download URL | ultimate_anatome-0.1.1-py3-none-any.whl |
|---|---|
| Size | 30.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
43375f201a375ced341993ad5636fa307301831281ad3fcb770edb6646fdb021
|
|
BLAKE2b-256 checksum How to use checksums |
d9a377243df9ce719e719b24038428ca8289e6b498e9106264f6acda46ba3f90
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.6
|
Security for ultimate-anatome 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.