I’m not completely sure, but by skimming through the repository, it seems that some attributes are manipulated in this forward call, which might add these additional parameters.
If that’s the case, I think the valid approach would be to use a “fake forward pass” to initialize these parameters and load the state_dict afterwards.
Also, I agree that your workflow of creating the model beforehand and load the state_dict afterwards is the preferred way.