code: def sample(path, start, length):
      
      # initialize vocabulary and sequence length
      param.seq_len = 1
      ds = CharRNNData(param.corpus, 100000)
  
      pred = OfflinePredictor(PredictConfig(
          model=Model(),
          session_init=SaverRestore(path),
          input_names=['input', 'c0', 'h0', 'c1', 'h1'],
          output_names=['prob', 'last_state']))
  
      # feed the starting sentence
      initial = np.zeros((1, param.rnn_size))
      for c in start[:-1]:
          x = np.array([[ds.char2idx[c]]], dtype='int32')
          _, state = pred(x, initial, initial, initial, initial)
  
      def pick(prob):
          t = np.cumsum(prob)
          s = np.sum(prob)
          return(int(np.searchsorted(t, np.random.rand(1) * s)))
  
      # generate more
      ret = start
      c = start[-1]
      for k in range(length):
          x = np.array([[ds.char2idx[c]]], dtype='int32')
          prob, state = pred(x, state[0, 0], state[0, 1], state[1, 0], state[1, 1])
          c = ds.chars[pick(prob[0])]
          ret += c
      print(ret)
docs: :param path: path to the model
      :param start: a `str`. the starting characters
      :param length: a `int`. the length of text to generate