OK, here is the answer.
self.model.load_state_dict(checkpoint['model'].module.state_dict())

actually works and the reason it was failing earlier was that, I instantiated the models differently (assuming the use_se to be false as it was in the original training script) and thus the keys would differ.
Simply finding about this thanks to dear God, solved the issue.
here is the changed snippet :
use_se = False
# in order to see if the use_se switch was used in the model
 # we do this:
 for k, m in checkpoint['model'].module.state_dict().items():
    if 'se' in k:
        use_se = True
         break

if self.model_name == 'r18':
            self.model = resnet18(pretrained=False, use_se=use_se)
        elif self.model_name == 'r50':
            self.model = resnet50(pretrained=False, use_se=use_se)
        elif self.model_name == 'r101':
            self.model = resnet101(pretrained=False, use_se=use_se)
        else:
            raise Exception(f"Model name: '{self.model_name}' is not recognized.")
      

        # load the model weights
        # since the model was trained using DataParallel, we need to use module
        # to access the actual model and its parameters.
        self.model.load_state_dict(checkpoint['model'].module.state_dict())

Update:
As @ptrblck said, doing this still has the issues such as module/file/dir hierarchy dependency. In order to properly load such models, simply convert them into torch script and load the parameters that way.
That is :
Solution 1:
Try converting your model into torch script and then use that instead:
def convert_model(model, input=torch.tensor(torch.rand(size=(1,3,112,112)))):
        model = torch.jit.trace(self.model, input)
        torch.jit.save(model,'/home/Rika/Documents/models/model.tjm')

and then loaded this version instead:
# load the model 
self.model = torch.jit.load('/home/Rika/Documents/models/model.tjm')

Solution 2:
simply save the model’s state_dict() again and use  that instead :
I myself ended up doing :
self.model = checkpoint['model'].module
# create the new checkpoint based on what you need 
torch.save({'state_dict' : self.model.state_dict(), 'use_se':True},
            '/home/Rika/Documents/BEST_checkpoint_r18_2.tar')

and started using the new checkpoint and so far everything has been good