Я читал этот код. Из 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
?