Ἀνατομή is a PyTorch library to analyze internal representation of neural networks
This project is under active development and the codebase is subject to change.
v0.0.5 introduces significant changes to distance
.
anatome
requires
Python>=3.9.0
PyTorch>=1.10
torchvision>=0.11
After the installation of PyTorch, install anatome
as follows:
pip install -U git+https://github.com/moskomule/anatome
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 Distance
random_model = resnet18()
learned_model = resnet18(pretrained=True)
distance = Distance(random_model, learned_model, method='pwcca')
with torch.no_grad():
distance.forward(torch.randn(256, 3, 224, 224))
# resize if necessary by specifying `size`
distance.between("layer3.0.conv1", "layer3.0.conv1", size=8)
from torch.nn import functional as F
from torchvision.models import resnet18
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)
- Yin et al. NeurIPS 2019 etc.,
from torch.nn import functional as F
from torchvision.models import resnet18
from anatome import fourier_map
map = fourier_map(resnet18(),
data,
F.cross_entropy,
norm=4)
imshow(map)
If you use this implementation in your research, please cite as:
@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}
}