I was trying to remove the last layer (fc) of Resnet18 to create something like this by using the following
pretrained_model = models.resnet18(pretrained=True) for param in pretrained_model.parameters(): param.requires_grad = False my_model = nn.Sequential(*list(pretrained_model.modules())[:-1]) model = MyModel(my_model)
As it turns out this did not work (the layer is still there in the new model). I then found this post and used the below line which works.
my_model = nn.Sequential(*list(pretrained_model.children())[:-1])
What is the difference between the two and why does one work but not the other?