In your code snippet you are not using the  state_dict  method, so I’m unsure if I misunderstand the question.

I’ll elaborate more on my question.
If I used the same code as above, calling state_dict() on the created instance of the main model would give me it’s weights with their requires_grad attribute set to False as expected.
However, should I use the training loop in my previous reply for the instance of the main model (Regardless of if the pretrained weights have been loaded or not), the weights for all of it’s layers do get updated during the training cycles and my thinking is that either setting the requires_grad attribute of the pretrained layers to False, or only loading the parameters of the layers that require training to the instance of the optimiser would not freeze the weights of the pretrained layers.
Hence, the rephrased question would be: Assuming that I have already loaded the pretrained layer weights into the main model, how do I ensure that the weights for the pretrained layers stay frozen?