Yes, manually unwrapping the data should work. Something like this might help:
# flatten
gg = []
for name, weight in network.named_parameters():
    gg.extend(weight.cpu().detach().numpy().flatten())
    
# restore
sd = {}
i = 0
for name, weight in network.named_parameters():
    param_len = weight.nelement()
    param = torch.tensor(gg[i:i+param_len])
    param = param.view_as(weight)
    sd[name] = param
    i += param_len
    
for (name1), (name2, param2) in zip(sd, network.named_parameters()):
    param1 = sd[name1]
    print('name {} equal: {}'.format(name1, name1==name2))
    print('param equal {}'.format((param1 == param2).all()))