parameters: (lengths, maxlen=None, prim_name='sequence_mask')
return_statement: return result
docstring: Returns a mask tensor representing the first N positions of each cell.
  
      If lengths has shape [d_1, d_2, ..., d_n], then the resulting tensor mask has type and shape
      [d_1, d_2, ..., d_n, maxlen], with mask[i_1, i_2, ..., i_n, j] = (j < lengths[i_1, i_2, ..., i_n])
  
      Args:
          lengths (Tensor): Tensor to calculate the mask for. All values in this tensor should be
              less than or equal to `maxlen`. Values greater than `maxlen` will be treated as `maxlen`.
          maxlen (int): size of the last dimension of returned tensor. Must be positive and same
              type as elements in `lengths`. Default is None.
          prim_name (str): The name of primitive. Default: 'sequence_mask'.
  
      Inputs:
          - **lengths** (Tensor) - Tensor to calculate the mask for. All values in this tensor should be
            less than or equal to `maxlen`. Values greater than `maxlen` will be treated as `maxlen`.
            Must be type int32 or int64.
          - **maxlen** (int) - size of the last dimension of returned tensor. Must be positive and same
            type as elements in `lengths`. Default is None.
  
      Outputs:
          One mask tensor of shape lengths.shape + (maxlen,).
  
      Raises:
          TypeError: If `lengths` is not a Tensor.
          TypeError: If `maxlen` is not an int.
          TypeError: If dtype of `lengths` is neither int32 nor int64.
  
      Supported Platforms:
          ``GPU``
  
      Examples:
          >>> from mindspore import Tensor, ops
          >>> import mindspore
          >>> import numpy as np
          >>> # case 1: When maxlen is assigned
          >>> x = Tensor(np.array([1, 2, 3, 4]))
          >>> output = 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 = Tensor(np.array([[1, 3], [2, 0]]))
          >>> output = 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 = Tensor(np.array([[1, 3], [2, 4]]))
          >>> output = ops.sequence_mask(x)
          >>> print(output)
          [[[ True False False False ]
            [ True  True  True False ]]
           [[ True  True False False ]
            [ True  True  True  True ]]]
docstring_summary: Returns a mask tensor representing the first N positions of each cell.
docstring_tokens: Returns a mask tensor representing the first N positions of each cell .
function: def sequence_mask(lengths, maxlen=None, prim_name='sequence_mask'):
      """
      Returns a mask tensor representing the first N positions of each cell.
  
      If lengths has shape [d_1, d_2, ..., d_n], then the resulting tensor mask has type and shape
      [d_1, d_2, ..., d_n, maxlen], with mask[i_1, i_2, ..., i_n, j] = (j < lengths[i_1, i_2, ..., i_n])
  
      Args:
          lengths (Tensor): Tensor to calculate the mask for. All values in this tensor should be
              less than or equal to `maxlen`. Values greater than `maxlen` will be treated as `maxlen`.
          maxlen (int): size of the last dimension of returned tensor. Must be positive and same
              type as elements in `lengths`. Default is None.
          prim_name (str): The name of primitive. Default: 'sequence_mask'.
  
      Inputs:
          - **lengths** (Tensor) - Tensor to calculate the mask for. All values in this tensor should be
            less than or equal to `maxlen`. Values greater than `maxlen` will be treated as `maxlen`.
            Must be type int32 or int64.
          - **maxlen** (int) - size of the last dimension of returned tensor. Must be positive and same
            type as elements in `lengths`. Default is None.
  
      Outputs:
          One mask tensor of shape lengths.shape + (maxlen,).
  
      Raises:
          TypeError: If `lengths` is not a Tensor.
          TypeError: If `maxlen` is not an int.
          TypeError: If dtype of `lengths` is neither int32 nor int64.
  
      Supported Platforms:
          ``GPU``
  
      Examples:
          >>> from mindspore import Tensor, ops
          >>> import mindspore
          >>> import numpy as np
          >>> # case 1: When maxlen is assigned
          >>> x = Tensor(np.array([1, 2, 3, 4]))
          >>> output = 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 = Tensor(np.array([[1, 3], [2, 0]]))
          >>> output = 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 = Tensor(np.array([[1, 3], [2, 4]]))
          >>> output = ops.sequence_mask(x)
          >>> print(output)
          [[[ True False False False ]
            [ True  True  True False ]]
           [[ True  True False False ]
            [ True  True  True  True ]]]
      """
  
      argmax_op = P.ArgMaxWithValue()
      reshape_op = P.Reshape()
      range_op = P.Range()
      expand_op = P.ExpandDims()
      cast_op = P.Cast()
      shape_op = P.Shape()
      to_tensor_op = P.ScalarToArray()
  
      const_utils.check_type_valid(F.dtype(lengths), [mstype.int64, mstype.int32], 'lengths')
      _check_sequence_mask_input_len(shape_op(lengths), prim_name)
  
      if maxlen is None:
          flatten_data = reshape_op(lengths, (-1,))
          flatten_data = cast_op(flatten_data, mstype.float32)
          _, value = argmax_op(flatten_data)
          maxlen = cast_op(value, mstype.int32)
      else:
          maxlen = _check_positive_int(maxlen, "maxlen", "sequence_mask")
          maxlen = to_tensor_op(maxlen)
  
      range_vector = range_op(to_tensor_op(0), maxlen
                              , to_tensor_op(1))
      mask = expand_op(lengths, -1)
      result = range_vector < mask
      return result
function_tokens: def sequence_mask ( lengths , maxlen = None , prim_name = 'sequence_mask' ) : argmax_op = P . ArgMaxWithValue ( ) reshape_op = P . Reshape ( ) range_op = P . Range ( ) expand_op = P . ExpandDims ( ) cast_op = P . Cast ( ) shape_op = P . Shape ( ) to_tensor_op = P . ScalarToArray ( ) const_utils . check_type_valid ( F . dtype ( lengths ) , [ mstype . int64 , mstype . int32 ] , 'lengths' ) _check_sequence_mask_input_len ( shape_op ( lengths ) , prim_name ) if maxlen is None : flatten_data = reshape_op ( lengths , ( - 1 , ) ) flatten_data = cast_op ( flatten_data , mstype . float32 ) _ , value = argmax_op ( flatten_data ) maxlen = cast_op ( value , mstype . int32 ) else : maxlen = _check_positive_int ( maxlen , "maxlen" , "sequence_mask" ) maxlen = to_tensor_op ( maxlen ) range_vector = range_op ( to_tensor_op ( 0 ) , maxlen , to_tensor_op ( 1 ) ) mask = expand_op ( lengths , - 1 ) result = range_vector < mask return result