I am reading a GitHub code that uses a pretrained version of Inception V3. I am confused by this line model.load_state_dict(torch.load(args.model_loc))
in the code:
# define the model
model = models.inception_v3(pretrained=True)
num_ftrs = model.fc.in_features
model.fc = nn.Linear(num_ftrs, 2)
# load the model
model.load_state_dict(torch.load(args.model_loc))
model.eval()
model.cuda()
As we see, in the original Inception code, it is already loading the state dict. I am wondering why the authors are also doing same after setting their model to the pretrained Inception V3?
At the same time, I see this piece of Kaggle code for using a pretrained Inception V3 model. So, which method do you comment as correct?
import torchvision.models as models
import torch.optim as optim
model_ft = models.inception_v3(pretrained=True)
for param in model_ft.parameters():
param.requires_grad = False
# Parameters of newly constructed modules have requires_grad=True by default
# Handle the auxilary net
num_ftrs = model_ft.AuxLogits.fc.in_features
model_ft.AuxLogits.fc = nn.Linear(num_ftrs, 2)
# Handle the primary net
num_ftrs = model_ft.fc.in_features
model_ft.fc = nn.Linear(num_ftrs, 2)