The state_dict will contain all parameters and buffers of the model.
In the case of Net_D it will contain the parameters/buffers of the internal resnet50 as well as your custom linear layer. I’m not sure, what remove_last does, but if it removes the last linear layer, your custom one will most likely be gone.
In Net_C you are calling self.load_state_dict immediately in the __init__ method, which won’t work, as your model does not have any parameters or buffers yet.
If you just want to initialize the linear layer and load its state_dict, you could use this approach 2.