Skip to main content

Ἀνατομή (Anatome) is a PyTorch library to analyze representation of neural networks

Project description

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.

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}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ultimate-anatome-0.0.9.tar.gz (17.8 kB view details)

Uploaded Source

Built Distribution

ultimate_anatome-0.0.9-py3-none-any.whl (24.0 kB view details)

Uploaded Python 3

File details

Details for the file ultimate-anatome-0.0.9.tar.gz.

File metadata

  • Download URL: ultimate-anatome-0.0.9.tar.gz
  • Upload date:
  • Size: 17.8 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for ultimate-anatome-0.0.9.tar.gz
Algorithm Hash digest
SHA256 71ab75b5026d1f824ba306634dc311ec01254e2ed97f84a5a19932e651e1225c
MD5 a6c37d62c6b919f3f23ef80a746e8083
BLAKE2b-256 8fbcb22dc0a9f8d6c0d82eefbb46c8555c430e65b3ed4943f7fc02923af90bdb

See more details on using hashes here.

File details

Details for the file ultimate_anatome-0.0.9-py3-none-any.whl.

File metadata

  • Download URL: ultimate_anatome-0.0.9-py3-none-any.whl
  • Upload date:
  • Size: 24.0 kB
  • Tags: Python 3
  • Uploaded using 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

File hashes

Hashes for ultimate_anatome-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 f0a2c7148dfa2cb3a9c2bb45e60efb47f775768d254cece23dcd94f78eea934a
MD5 f1587937903b1615555ee36ec5be97b8
BLAKE2b-256 486032ba06f920429345e278d68792c9808226bc14975eb85ebf0eb192490d2d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page