class_docstr: Repeat Copy task from the Neural Turing Machines paper:
      http://arxiv.org/abs/1410.5401.
  
  See Also:
      See comments on :py:class:`~neon.data.ticker.CopyTask` class for more details.
docstr: Create a new minibatch of ticker repeat copy task data.
  
  Arguments:
      in_tensor (Tensor): Device buffer holding inputs
      out_tensor (Tensor): Device buffer holding outputs
      mask (numpy array): Device buffer for the output mask
docstr_tok: ["Create","a","new","minibatch","of","ticker","repeat","copy","task","data",".","Arguments",":","in_tensor","(","Tensor",")",":","Device","buffer","holding","inputs","out_tensor","(","Tensor",")",":","Device","buffer","holding","outputs","mask","(","numpy","array",")",":","Device","buffer","for","the","output","mask"]
code: def synthesize(self, in_tensor, out_tensor, mask):
      """
      Create a new minibatch of ticker repeat copy task data.
  
      Arguments:
          in_tensor (Tensor): Device buffer holding inputs
          out_tensor (Tensor): Device buffer holding outputs
          mask (numpy array): Device buffer for the output mask
      """
      # All sequences in a minibatch are the same length for convenience
      seq_len = np.random.randint(1, self.seq_len_max + 1)
      repeat_count = np.random.randint(1, self.repeat_count_max + 1)
      time_steps = self.time_steps_func(seq_len, repeat_count)
  
      # Get the minibatch specific numpy buffers
      inputs, outputs = super(RepeatCopyTask, self).fetch_io(time_steps)
  
      # Set the start bit
      inputs[-2, : self.be.bsz] = 1
  
      # Generate the sequence to be copied
      seq = np.random.randint(
          2, size=(self.vec_size, seq_len * self.be.bsz)
      )
  
      # Set the repeat count
      # TODO: should we normalize repeat count?
      stop_loc = self.be.bsz * (seq_len + 1)
      inputs[-1, stop_loc : stop_loc + self.be.bsz] = repeat_count
  
      # Place the actual sequence to copy in inputs
      inputs[: self.vec_size, self.be.bsz : stop_loc] = seq
  
      # Now place that same sequence repeat_copy times in outputs
      for i in range(repeat_count):
          start = self.be.bsz * ((i + 1) * seq_len + 2)
          stop = start + seq_len * self.be.bsz
          outputs[:-1, start:stop] = seq
  
      # Place the output finish bit
      outputs[-1, -self.be.bsz :] = 1
  
      # Fill the device minibatch buffers
      super(RepeatCopyTask, self).fill_buffers(
          time_steps, inputs, outputs, in_tensor, out_tensor, mask
      )
  
imports: import numpy
  from neon import NervanaObject
label_desc: Use image node_id 2 for calling the RepeatCopyTask obj's underlying member method code with example usage: obj.synthesize(in_tensor, out_tensor, mask) without return types