
    ϑim(                    N   S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  \(       a  S SKJr  / r\" S	S
SSS9 S       SS jj5       r\" S	SSSS9 S       SS jj5       r\" S	SSSS9 S       SS jj5       r\" S	SSSS9 S       SS jj5       rg)    )annotations)TYPE_CHECKING)_C_ops)check_variable_and_dtype)LayerHelper)in_dynamic_or_pir_mode)
deprecated)Tensorz2.4.0zpaddle.geometric.segment_sum   z5paddle.incubate.segment_sum will be removed in future)since	update_tolevelreasonNc                D   [        5       (       a  [        R                  " XS5      $ [        U SSS5        [        USSS5        [	        S0 [        5       D6nUR                  U R                  S9nUR                  U R                  S9nUR                  SXS.XES	.S
S0S9  U$ )a  
Segment Sum Operator.

Sum the elements of input `data` which with
the same index in `segment_ids`.
It computes a tensor such that

.. math::

    out_i = \sum_{j \in \{segment\_ids_j == i \} } data_{j}

where sum is over j such that `segment_ids[j] == i`.

Args:
    data (Tensor): A tensor, available data type float32, float64, int32, int64.
    segment_ids (Tensor): A 1-D tensor, which have the same size
                        with the first dimension of input data.
                        Available data type is int32, int64.
    name (str, optional): Name for the operation (optional, default is None).
                        For more information, please refer to :ref:`api_guide_Name`.

Returns:
   Tensor, the Segment Sum result.

Examples:

    .. code-block:: python

        >>> import paddle
        >>> data = paddle.to_tensor([[1, 2, 3], [3, 2, 1], [4, 5, 6]], dtype='float32')
        >>> segment_ids = paddle.to_tensor([0, 0, 1], dtype='int32')
        >>> out = paddle.incubate.segment_sum(data, segment_ids)
        >>> print(out)
        Tensor(shape=[2, 3], dtype=float32, place=Place(cpu), stop_gradient=True,
        [[4., 4., 4.],
         [4., 5., 6.]])

SUMXfloat32float64int32int64segment_pool
SegmentIdsr   r   dtyper   r   Out	SummedIdspooltypetypeinputsoutputsattrs)segment_sum	r   r   r   r   r   locals"create_variable_for_type_inferencer   	append_opdatasegment_idsnamehelperout
summed_idss         [/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/incubate/tensor/math.pyr'   r'      s    ^ ""4e<< #?	
 	!'9>	
 7fh777djj7I>>TZZ>P
99u%	 	 	
 
    zpaddle.geometric.segment_meanz6paddle.incubate.segment_mean will be removed in futurec                D   [        5       (       a  [        R                  " XS5      $ [        U SSS5        [        USSS5        [	        S0 [        5       D6nUR                  U R                  S9nUR                  U R                  S9nUR                  SXS.XES	.S
S0S9  U$ )a  
Segment Mean Operator.

Ihis operator calculate the mean value of input `data` which
with the same index in `segment_ids`.
It computes a tensor such that

.. math::

    out_i = \mathop{mean}_{j \in \{segment\_ids_j == i \} } data_{j}

where sum is over j such that 'segment_ids[j] == i' and $n_i$ is the number
of all index 'segment_ids[j] == i'.

Args:
    data (tensor): a tensor, available data type float32, float64, int32, int64.
    segment_ids (tensor): a 1-d tensor, which have the same size
                        with the first dimension of input data.
                        available data type is int32, int64.
    name (str, optional): Name for the operation (optional, default is None).
                        For more information, please refer to :ref:`api_guide_Name`.

Returns:
   Tensor, the Segment Mean result.

Examples:

    .. code-block:: python

        >>> import paddle
        >>> data = paddle.to_tensor([[1, 2, 3], [3, 2, 1], [4, 5, 6]], dtype='float32')
        >>> segment_ids = paddle.to_tensor([0, 0, 1], dtype='int32')
        >>> out = paddle.incubate.segment_mean(data, segment_ids)
        >>> print(out)
        Tensor(shape=[2, 3], dtype=float32, place=Place(cpu), stop_gradient=True,
        [[2., 2., 2.],
         [4., 5., 6.]])

MEANr   r   r   r   r   r   r   r   r!   r"   )segment_meanr(   r,   s         r3   r7   r7   d   s    b ""4f==c;^ \#5~ 4684F

3
3$**
3
EC:::LJ
556"	   Jr4   zpaddle.geometric.segment_minz5paddle.incubate.segment_min will be removed in futurec                D   [        5       (       a  [        R                  " XS5      $ [        U SSS5        [        USSS5        [	        S0 [        5       D6nUR                  U R                  S9nUR                  U R                  S9nUR                  SXS.XES	.S
S0S9  U$ )a  
Segment min operator.

Calculate the minimum elements of input `data` which with
the same index in `segment_ids`.
It computes a tensor such that

.. math::

    out_i = \min_{j \in \{segment\_ids_j == i \} } data_{j}

where min is over j such that `segment_ids[j] == i`.

Args:
    data (tensor): a tensor, available data type float32, float64, int32, int64.
    segment_ids (tensor): a 1-d tensor, which have the same size
                        with the first dimension of input data.
                        available data type is int32, int64.
    name (str, optional): Name for the operation (optional, default is None).
                        For more information, please refer to :ref:`api_guide_Name`.

Returns:
   Tensor, the minimum result.

Examples:

    .. code-block:: python

        >>> import paddle
        >>> data = paddle.to_tensor([[1, 2, 3], [3, 2, 1], [4, 5, 6]], dtype='float32')
        >>> segment_ids = paddle.to_tensor([0, 0, 1], dtype='int32')
        >>> out = paddle.incubate.segment_min(data, segment_ids)
        >>> print(out)
        Tensor(shape=[2, 3], dtype=float32, place=Place(cpu), stop_gradient=True,
        [[1., 2., 1.],
         [4., 5., 6.]])

MINr   r   r   r   r   r   r   r   r!   r"   )segment_minr(   r,   s         r3   r:   r:      s    ` ""4e<<c;^ \#5~ 3&(3F

3
3$**
3
EC:::LJ
555!	   Jr4   zpaddle.geometric.segment_maxz5paddle.incubate.segment_max will be removed in futurec                H   [        5       (       a  [        R                  " XS5      nU$ [        U SSS5        [        USSS5        [	        S0 [        5       D6nUR                  U R                  S9nUR                  U R                  S9nUR                  SXS.X5S	.S
S0S9  U$ )a  
Segment max operator.

Calculate the maximum elements of input `data` which with
the same index in `segment_ids`.
It computes a tensor such that

.. math::

    out_i = \max_{j \in \{segment\_ids_j == i \} } data_{j}

where max is over j such that `segment_ids[j] == i`.

Args:
    data (tensor): a tensor, available data type float32, float64, int32, int64.
    segment_ids (tensor): a 1-d tensor, which have the same size
                        with the first dimension of input data.
                        available data type is int32, int64.
    name (str, optional): Name for the operation (optional, default is None).
                        For more information, please refer to :ref:`api_guide_Name`.

Returns:
   Tensor, the maximum result.

Examples:

    .. code-block:: python

        >>> import paddle
        >>> data = paddle.to_tensor([[1, 2, 3], [3, 2, 1], [4, 5, 6]], dtype='float32')
        >>> segment_ids = paddle.to_tensor([0, 0, 1], dtype='int32')
        >>> out = paddle.incubate.segment_max(data, segment_ids)
        >>> print(out)
        Tensor(shape=[2, 3], dtype=float32, place=Place(cpu), stop_gradient=True,
        [[3., 2., 3.],
         [4., 5., 6.]])

MAXr   r   r   r   r   r   r   r   r!   r"   )segment_maxr(   )r-   r.   r/   r1   r0   r2   s         r3   r=   r=      s    ` !!$U;
c;^ \#5~ 3&(3F

3
3$**
3
EC:::LJ
555!	   Jr4   )N)r-   r
   r.   r
   r/   z
str | Nonereturnr
   )
__future__r   typingr   paddler   paddle.base.data_feederr   paddle.base.layer_helperr   paddle.frameworkr   paddle.utilsr	   r
   __all__r'   r7   r:   r=    r4   r3   <module>rH      sR   #    < 0 3 #
 
,
B	 ;?<
<%<-7<<<~ 
-
C	 ;?>
>%>-7>>>B 
,
B	 ;?=
=%=-7===@ 
,
B	 ;?>
>%>-7>>>r4   