code: def load_module(prefix, epoch, data_names, data_shapes):
      
      sym, arg_params, aux_params = mx.model.load_checkpoint(prefix, epoch)
  
      # We don't need CTC loss for prediction, just a simple softmax will suffice.
      # We get the output of the layer just before the loss layer ('pred_fc') and add softmax on top
      pred_fc = sym.get_internals()['pred_fc_output']
      sym = mx.sym.softmax(data=pred_fc)
  
      mod = mx.mod.Module(symbol=sym, context=mx.cpu(), data_names=data_names, label_names=None)
      mod.bind(for_training=False, data_shapes=data_shapes)
      mod.set_params(arg_params, aux_params, allow_missing=False)
      return mod
docs: Loads the model from checkpoint specified by prefix and epoch, binds it
      to an executor, and sets its parameters and returns a mx.mod.Module