This library is deprecated in favor of anatome. I will no longer support this repository.
PyTorch implementation of
- SVCCA: Singular Vector Canonical Correlation Analysis for Deep Learning Dynamics and Interpretability
- Insights on representational similarity in neural networks with canonical correlation
Now GPU is set as the default device for SVD calculation.
- Python>=3.6
- PyTorch>=0.4.1
- torchvision>=0.2.1
To run example.py
, you also need
- homura
- matplotlib
from cca import CCAHook
device = "cuda" # or "cpu"
hook1 = CCAHook(model, "layer3.0.conv1", svd_device=device)
hook2 = CCAHook(model, "layer3.0.conv2", svd_device=device)
model.eval()
with torch.no_grad():
model(torch.randn(1200, 3, 224, 224))
hook1.distance(hook2, size=8) # resize to 8x8
python example.py
trains ResNet-20 on CIFAR-10 for 100 epochs then measures CCA distance between a trained model and its checkpoints.
While the original SVCCA uses DFT for resizing, we use global average pooling for simplicity.