Еще один пример использования funtools.partial в учебном коде T5 - PullRequest
0 голосов
/ 30 апреля 2020

Я читал этот код. Из T5 учебника .. Я нашел этот фрагмент.

def nq_dataset_fn(split, shuffle_files=False):
  # We only have one file for each split.
  del shuffle_files

  # Load lines from the text file as examples.
  ds = tf.data.TextLineDataset(nq_tsv_path[split])
  # Split each "<question>\t<answer>" example into (question, answer) tuple.
  ds = ds.map(
      functools.partial(tf.io.decode_csv, record_defaults=["", ""],
                        field_delim="\t", use_quote_delim=False),
      num_parallel_calls=tf.data.experimental.AUTOTUNE)
  # Map each tuple to a {"question": ... "answer": ...} dict.
  ds = ds.map(lambda *ex: dict(zip(["question", "answer"], ex)))
  return ds

Что я понял, прочитав это? Ну, functools.partial используется для создания оболочки вокруг некоторых известных для манипулирования аргументами или для уменьшения количества аргументов, но какой здесь вариант использования? Это сбивает с толку, учитывая, что мы могли бы просто позвонить tf.io.decode_csv?

...