I guess I figured out what the problem is…
It is that in Python when you do object_new = object_old then object_new is not really a new object, it’s just another name for object_old .
In other words, this is shallow copy.
And whenever  object_old is changed, changes are reflected to object_new.
Since I’m using shallow copy (without knowing at first) like:
float_model_dict = cnn.state_dict()
an independent copy of state_dict() is not being created, rather a shallow copy is taking place.
In order to get the desired independent copy, I had to:
import copy
first, then deep copy:
float_model_dict = copy.deepcopy(cnn.state_dict())
This was the way I followed to copy a model.
Now in order to modify a ‘deep copied’ copy, I did the following:
for key, value in some_model_dict.items():
    some_model_dict[key] = operation(value)

and that’s it.