Пример #1
0
 def collate_fn(xs):
     inputs = aggregate_value_by_key(xs, 'src')
     inputs = list(zip(*inputs))
     inputs = [cuda(pack_tensors(input, voc.pad_id)) for input, voc in zip(inputs, vocabs)]
     return {
         'src': inputs[0] if len(inputs) == 1 else inputs,
         'n_tok': aggregate_value_by_key(xs, 'n_tok', sum),
         'n_snt': inputs[0].size(0)
     }
Пример #2
0
 def collate_fn(xs):
     return {
         'src':
         cuda(
             pack_tensors(aggregate_value_by_key(xs, 'src'),
                          source_vocab.pad_id)),
         'n_tok':
         aggregate_value_by_key(xs, 'n_tok', sum),
         'refs':
         aggregate_value_by_key(xs, 'refs')
     }
Пример #3
0
 def collate_fn(xs):
     return {
         'src':
         cuda(
             pack_tensors(aggregate_value_by_key(xs, 'src'),
                          source_vocab.pad_id)),
         'trg':
         cuda(
             pack_tensors(aggregate_value_by_key(xs, 'trg'),
                          target_vocab.pad_id)),
         'n_src_tok':
         aggregate_value_by_key(xs, 'n_src_tok', sum),
         'n_trg_tok':
         aggregate_value_by_key(xs, 'n_trg_tok', sum),
     }
Пример #4
0
 def collate_fn(xs):
     return {
         'src':
         cuda(
             pack_tensors(aggregate_value_by_key(xs, 'src'),
                          source_vocab.pad_id)),
         'r2l':
         cuda(
             pack_tensors(aggregate_value_by_key(xs, 'r2l'),
                          target_vocab.pad_id)),
         'l2r':
         cuda(
             pack_tensors(aggregate_value_by_key(xs, 'l2r'),
                          target_vocab.pad_id)),
         'ntok_src':
         aggregate_value_by_key(xs, 'n_src_tok', sum),
         'ntok_r2l':
         aggregate_value_by_key(xs, 'ntok_r2l', sum),
         'ntok_l2r':
         aggregate_value_by_key(xs, 'ntok_l2r', sum),
     }