Interesting approach. Loading the weights, create an initialized modified layer weights, and then loading the initialized weights from that layer to the net.
In my case I need to add a new input to fc5
            ('fc4',   nn.Sequential(nn.Dropout(0.5),
                                    nn.Linear(512 * 3 * 3, 512),  
                                    nn.ReLU())),
            ('fc5',   nn.Sequential(nn.Dropout(0.5),
                                    nn.Linear(512+1, 512), 
                                    nn.ReLU()))]))

I changed the load_model function to:
def load_model(self, model_path):
    model_weights = torch.load(model_path)
    d = model_weights['shared_layers']
    d['fc5.1.weight'] = torch.randn((512, 513)) * 0.01
    d['fc5.1.bias'] = torch.zeros(512)
    self.layers.load_state_dict(d)

And it seems to work. I’ll just take a look at  the weights of fc5.
Thanks a lot for your elaborate answer!