<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def make_batch(self):
 """Generator function for batchifying data for learning to execute. Yields: tuple: 1. one-hot input tensor, representing programmatic input 2. one-hot target tensor, the vealuation result. 3. one-hot decoder target, start symbol added for sequence decoding. 4. batch size tensor containing integer input sequence lengths. 5. batch size tensor containing integer output sequence lengths. """

    while True:
      self.reset_data_source()
      obs = np.reshape(self._data_source.flat_data,
                       [self.batch_size, -1])[:, :self._num_steps].T
      target = np.reshape(
          self._data_source.flat_targets,
          [self.batch_size, -1])[:, :self._num_steps_out].T
      start_tokens = np.ndarray([1, self.batch_size], dtype=np.int32)
      start_tokens.fill(self._data_source.start_token[0])
      target_in = np.concatenate((start_tokens, target[:-1, :]), axis=0)
      yield (self._np_one_hot(obs, self._num_steps),
             self._np_one_hot(target, self._num_steps_out),
             self._np_one_hot(target_in, self._num_steps_out),
             self.seq_sizes_in,
             self.seq_sizes_out)