Can you check whether
model.fc.parameters is on requires_grad = True.
Because at the end you are given into the optimizer the parameters you want to train.
You are exchanging model.fc with your own version of it and you want to train the parameters of your customized model.fc.
To check the parameters you give into the optimizer would be the first thing to check.
If this still fails we can think of other possible mistakes.