Captum: Interpretabilidade de Modelos para PyTorch
Captum é uma biblioteca poderosa para a interpretabilidade de modelos em PyTorch. Ela traz diversas vantagens para os usuários.
Visão Geral: Oferece suporte à interpretabilidade de modelos em várias modalidades, como visão, texto e mais.
Recursos Principais:
- Baseada no PyTorch, suportando a maioria dos tipos de modelos e permitindo uso com poucas modificações na rede neural original.
- É uma biblioteca de código aberto e extensível, ideal para pesquisas de interpretabilidade, permitindo a implementação e benchmark de novos algoritmos facilmente.
Uso Básico:
Para começar, instale o Captum via conda (recomendado): conda install captum -c pytorch
ou via pip: pip install captum
. Em seguida, crie e prepare o modelo. Exemplo:
import numpy as np
import torch
import torch.nn as nn
from captum.attr import IntegratedGradients
class ToyModel(nn.Module):
def __init__(self):
super().__init__()
self.lin1 = nn.Linear(3, 3)
self.relu = nn.ReLU()
self.lin2 = nn.Linear(3, 2)
self.lin1.weight = nn.Parameter(torch.arange(-4.0, 5.0).view(3, 3))
self.lin1.bias = nn.Parameter(torch.zeros(1,3))
self.lin2.weight = nn.Parameter(torch.arange(-3.0, 3.0).view(2, 3))
self.lin2.bias = nn.Parameter(torch.ones(1,2))
def forward(self, input):
return self.lin2(self.relu(self.lin1(input)))
model = ToyModel()
model.eval()
torch.manual_seed(123)
np.random.seed(123)
input = torch.rand(2, 3)
baseline = torch.zeros(2, 3)
ig = IntegratedGradients(model)
attributions, delta = ig.attribute(input, baseline, target=0, return_convergence_delta=True)
print('IG Atribuições:', attributions)
print('Convergência Delta:', delta)
Com Captum, os usuários podem obter uma melhor compreensão dos modelos PyTorch e suas decisões.