I’m a newbie to pytorch and I want to find a pretty way to compare layers’ weights between two models.
I’m currently using an alexnet and I’m freezing all the layers exept for the convolutional layers.
net = alexnet(pretrained=True) #freeze all the layers for param in net.parameters(): param.requires_grad = False # unfreeze only the fully connected layers net.classifier = nn.Linear(4096, NUM_CLASSES) for val in net.classifier: val.requires_grad = True
After the training phase, I save the best net (the one with the highest accuracy on the validation set) and creates some histograms with tensorboard.
basic_net = alexnet(pretrained=True) tb = SummaryWriter(comment = "Compare Conv Layers") j = 0 for i in [0,3,6,8,10]: tb.add_histogram("Pretrained conv layer", basic_net.features[i].weight.data.cpu().numpy(), j) j = j+1 tb.close tb = SummaryWriter(comment = "Compare Conv Layers") j = 0 for i in [0,3,6,8,10]: tb.add_histogram("My conv layer", best_net_3_2_1.features[i].weight.data.cpu().numpy(), j) j = j+1 tb.close tb.flush()
With the index i I consider just the convolutional layers.
This is what I obtained in tensorboard, is there any better way to compare the weights?