Thank you very much, I did save it the way you mentioned, but for resuming I used :
scheduler.load_state_dict(checkpoint['scheduler'])
and thats all, no need to change anything else.
So basically this is how the resume section is defined now :
 # optionally resume from a checkpoint
  if resume:
    if os.path.isfile(resume):
      print_log("=> loading checkpoint '{}'".format(resume), log)
      checkpoint = torch.load(resume)
      recorder = checkpoint['recorder']
      start_epoch = checkpoint['epoch']
      scheduler.load_state_dict(checkpoint['scheduler'])
      net.load_state_dict(checkpoint['state_dict'])
      optimizer.load_state_dict(checkpoint['optimizer'])
      print_log("=> loaded checkpoint '{}' (epoch {})" .format(resume, checkpoint['epoch']), log)
    else:
      print_log("=> no checkpoint found at '{}'".format(resume), log)
  else:
    print_log("=> did not use any checkpoint for {} model".format(arch), log)