Skip to content

Commit 9fd0f2d

Browse files
authored
support left pad for make_pad_mask (#1990)
1 parent e22bc78 commit 9fd0f2d

1 file changed

Lines changed: 15 additions & 3 deletions

File tree

icefall/utils.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1391,13 +1391,20 @@ def add_eos(ragged: k2.RaggedTensor, eos_id: int) -> k2.RaggedTensor:
13911391
return concat(ragged, eos_id, direction="right")
13921392

13931393

1394-
def make_pad_mask(lengths: torch.Tensor, max_len: int = 0) -> torch.Tensor:
1394+
def make_pad_mask(
1395+
lengths: torch.Tensor,
1396+
max_len: int = 0,
1397+
pad_left: bool = False,
1398+
) -> torch.Tensor:
13951399
"""
13961400
Args:
13971401
lengths:
13981402
A 1-D tensor containing sentence lengths.
13991403
max_len:
14001404
The length of masks.
1405+
pad_left:
1406+
If ``False`` (default), padding is on the right.
1407+
If ``True``, padding is on the left.
14011408
Returns:
14021409
Return a 2-D bool tensor, where masked positions
14031410
are filled with `True` and non-masked positions are
@@ -1414,9 +1421,14 @@ def make_pad_mask(lengths: torch.Tensor, max_len: int = 0) -> torch.Tensor:
14141421
max_len = max(max_len, lengths.max())
14151422
n = lengths.size(0)
14161423
seq_range = torch.arange(0, max_len, device=lengths.device)
1417-
expaned_lengths = seq_range.unsqueeze(0).expand(n, max_len)
1424+
expanded_lengths = seq_range.unsqueeze(0).expand(n, max_len)
1425+
1426+
if pad_left:
1427+
mask = expanded_lengths < (max_len - lengths).unsqueeze(1)
1428+
else:
1429+
mask = expanded_lengths >= lengths.unsqueeze(-1)
14181430

1419-
return expaned_lengths >= lengths.unsqueeze(-1)
1431+
return mask
14201432

14211433

14221434
# Copied and modified from https://github.com/wenet-e2e/wenet/blob/main/wenet/utils/mask.py

0 commit comments

Comments
 (0)