Hi,
As mentioned  by @LeviViana,  self.network.state_dict()[key] = new_state_dict[key] changes the  dictionary created when calling self.network.state_dict() (not the Tensor). So it won’t modify the network itself.
self.network.state_dict()[param_tensor][0][0] = 0 does change the original Tensor, because the indexing returns a view of the original Tensor that you modify.
The right way to change the whole Tensor is to change it inplace, not the dict: self.network.state_dict()[key].copy_(new_state_dict[key])
Note that (most likely) you don’t want such changes to be tracked by the autograd, so you should wrap these changes (inplace copy) into a with torch.no_grad():.
For your original question, the goal is to load weights that have different sizes from the current ones?
How do you handle that for layers parameters like in_channels/out_channels?