I am initializing a model and modifying it like this.
# create model
print("=> creating model '{}'".format(args.arch))
model = models.__dict__[args.arch]()

# freeze all layers but the last fc
for name, param in model.named_parameters():
        if name not in ['fc.weight', 'fc.bias']:
            param.requires_grad = False
    
# init the fc layer
if args.multi_label:
      model.fc = nn.Linear(model.fc.in_features, args.num_classes)
      model = nn.Sequential(
                            model,
                            nn.Sigmoid()
                           )

print(model)

Is this the correct approach? Or should the modifications always have to be in __init__ and forward method of an nn.Module class?