mindspore.ops.sequence_mask

查看源文件
mindspore.ops.sequence_mask(lengths, maxlen=None)[源代码]

返回一个表示每个单元的前N个位置的掩码tensor,内部元素数据类型为bool。

如果 lengths 的shape为 (d1,d2,...,dn) ,则生成的tensor掩码拥有数据类型,其shape为 (d1,d2,...,dn,maxlen) 。 且mask [i1,i2,...,in,j]=(j<lengths[i1,i2,...,in])

参数:
  • lengths (Tensor) - 输入tensor。此tensor中的所有值都应小于或等于 maxlen ,大于 maxlen 的值将被视为 maxlen

  • maxlen (int) - 指定返回tensor的长度。

返回:

Tensor,shape为 lengths.shape + (maxlen,)

支持平台:

GPU CPU

样例:

>>> import mindspore
>>> # case 1: When maxlen is assigned
>>> x = mindspore.tensor([1, 2, 3, 4])
>>> output = mindspore.ops.sequence_mask(x, 5)
>>> print(output)
[[ True False False False False]
 [ True  True False False False]
 [ True  True  True False False]
 [ True  True  True  True False]]
>>> # case 2: When there is 0 in x
>>> x = mindspore.tensor([[1, 3], [2, 0]])
>>> output = mindspore.ops.sequence_mask(x, 5)
>>> print(output)
[[[ True False False False False]
  [ True  True  True False False]]
 [[ True  True False False False]
  [False False False False False]]]
>>> # case 3: when the maxlen is not assigned
>>> x = mindspore.tensor([[1, 3], [2, 4]])
>>> output = mindspore.ops.sequence_mask(x)
>>> print(output)
[[[ True False False False ]
  [ True  True  True False ]]
 [[ True  True False False ]
  [ True  True  True  True ]]]