Does torch.load reads state_dict in memory?

I was wondering if torch.load which returns the state_dict reads and loads it directly in memory or simply reads the saved state_dict and returns a copy of it?

Basically I want to load the weights of a saved model and modify them without messing with the original weights.

I understand that I could create a replicate of the weights by copying them from state_dict modifying and then loading it to the model.

But, is this the recommended way?

Is there any chance that torch.load which returns state_dict operates like .detach() where it returns a reference to the weights and whatever changes we make there will be automatically reflected in the stored state_dict?

For instance,

chkpt = torch.load(path)
model = vgg()
replica_weights = chkpt['state_dict']
replica_weights += 1.24
model.load_state_dict(replica_weights)

In the above example will the changes in replica_weightsshow up in chkpt['state_dict'], in other words do they share the same memory space? Is replica_weights a copy of chkpt['state_dict'] or a reference pointing in the same memory space?

As suspected

As it turns out whenever we mess the weights we can still run torch.load to load the unmodified weights.