code: def backtranslate_samples(
      samples, collate_fn, generate_fn, cuda=True
  ):
      """Backtranslate a list of samples.
  
      Given an input (*samples*) of the form:
  
          [{'id': 1, 'source': 'hallo welt'}]
  
      this will return:
  
          [{'id': 1, 'source': 'hello world', 'target': 'hallo welt'}]
  
      Args:
          samples (List[dict]): samples to backtranslate. Individual samples are
              expected to have a 'source' key, which will become the 'target'
              after backtranslation.
          collate_fn (callable): function to collate samples into a mini-batch
          generate_fn (callable): function to generate backtranslations
          cuda (bool): use GPU for generation (default: ``True``)
  
      Returns:
          List[dict]: an updated list of samples with a backtranslated source
      """
      collated_samples = collate_fn(samples)
      s = (
          utils.move_to_cuda(collated_samples)
          if cuda
          else collated_samples
      )
      generated_sources = generate_fn(s)
  
      id_to_src = {sample["id"]: sample["source"] for sample in samples}
  
      # Go through each tgt sentence in batch and its corresponding best
      # generated hypothesis and create a backtranslation data pair
      # {id: id, source: generated backtranslation, target: original tgt}
      return [
          {
              "id": id.item(),
              "target": id_to_src[id.item()],
              "source": hypos[0]["tokens"].cpu(),
          }
          for id, hypos in zip(
              collated_samples["id"], generated_sources
          )
      ]
  
file_path: fairseq/fairseq/data/backtranslation_dataset.py
imports: import torch
  from fairseq import utils
  from .None import FairseqDataset
label_desc: Use image node_id 1 for calling a global function with example usage: backtranslate_samples(samples, collate_fn, generate_fn, cuda) and returns: unknown