MCPcopy Create free account
hub / github.com/MoonInTheRiver/DiffSinger / collate_2d

Function collate_2d

utils/__init__.py:62–76  ·  view source on GitHub ↗

Convert a list of 2d tensors into a padded 3d tensor.

(values, pad_idx=0, left_pad=False, shift_right=False, max_len=None)

Source from the content-addressed store, hash-verified

60
61
62def collate_2d(values, pad_idx=0, left_pad=False, shift_right=False, max_len=None):
63 """Convert a list of 2d tensors into a padded 3d tensor."""
64 size = max(v.size(0) for v in values) if max_len is None else max_len
65 res = values[0].new(len(values), size, values[0].shape[1]).fill_(pad_idx)
66
67 def copy_tensor(src, dst):
68 assert dst.numel() == src.numel()
69 if shift_right:
70 dst[1:] = src[:-1]
71 else:
72 dst.copy_(src)
73
74 for i, v in enumerate(values):
75 copy_tensor(v, res[i][size - len(v):] if left_pad else res[i][:len(v)])
76 return res
77
78
79def _is_batch_full(batch, num_tokens, max_tokens, max_sentences):

Callers

nothing calls this directly

Calls 2

copy_tensorFunction · 0.85
sizeMethod · 0.80

Tested by

no test coverage detected